http-request-manager 15.0.26 → 18.0.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 (232) hide show
  1. package/esm2022/http-request-manager.mjs +5 -0
  2. package/esm2022/lib/http-request-manager.module.mjs +146 -0
  3. package/esm2022/lib/http-request-services-demo/database-data-demo/database-data-demo.component.mjs +71 -0
  4. package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +41 -0
  5. package/esm2022/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.mjs +173 -0
  6. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.mjs +80 -0
  7. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.mjs +42 -0
  8. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.mjs +88 -0
  9. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.mjs +11 -0
  10. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.mjs +29 -0
  11. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.mjs +9 -0
  12. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.mjs +12 -0
  13. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.mjs +14 -0
  14. package/esm2022/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.mjs +315 -0
  15. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +270 -0
  16. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.mjs +67 -0
  17. package/esm2022/lib/index.mjs +4 -0
  18. package/esm2022/lib/interceptors/credentials.interceptor.mjs +14 -0
  19. package/esm2022/lib/interceptors/index.mjs +5 -0
  20. package/esm2022/lib/interceptors/models/error-settings.model.mjs +10 -0
  21. package/esm2022/lib/interceptors/proxy-debugger.interceptor.mjs +47 -0
  22. package/esm2022/lib/interceptors/request-error.interceptor.mjs +49 -0
  23. package/esm2022/lib/interceptors/request-header.interceptor.mjs +41 -0
  24. package/esm2022/lib/models/config-http-options.model.mjs +18 -0
  25. package/esm2022/lib/models/config-local-storage-options.model.mjs +12 -0
  26. package/esm2022/lib/models/config-options.model.mjs +12 -0
  27. package/esm2022/lib/models/config-token.model.mjs +8 -0
  28. package/esm2022/lib/models/data-type.enum.mjs +7 -0
  29. package/esm2022/lib/models/database-storage.model.mjs +10 -0
  30. package/esm2022/lib/models/index.mjs +7 -0
  31. package/esm2022/lib/models/retry-options.model.mjs +10 -0
  32. package/esm2022/lib/services/database-manager-services/database.manager.service.mjs +119 -0
  33. package/esm2022/lib/services/database-manager-services/db.storage.service.mjs +143 -0
  34. package/esm2022/lib/services/database-manager-services/index.mjs +4 -0
  35. package/esm2022/lib/services/database-manager-services/models/table-schema.mjs +20 -0
  36. package/esm2022/lib/services/index.mjs +6 -0
  37. package/esm2022/lib/services/local-storage-manager-service/index.mjs +3 -0
  38. package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +302 -0
  39. package/esm2022/lib/services/local-storage-manager-service/models/global-store-options.model.mjs +13 -0
  40. package/esm2022/lib/services/local-storage-manager-service/models/index.mjs +6 -0
  41. package/esm2022/lib/services/local-storage-manager-service/models/setting-options.model.mjs +13 -0
  42. package/esm2022/lib/services/local-storage-manager-service/models/storage-data.model.mjs +10 -0
  43. package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +12 -0
  44. package/esm2022/lib/services/local-storage-manager-service/models/storage-type.enum.mjs +7 -0
  45. package/esm2022/lib/services/request-manager-services/http-manager.service.mjs +207 -0
  46. package/esm2022/lib/services/request-manager-services/index.mjs +5 -0
  47. package/esm2022/lib/services/request-manager-services/request.service.mjs +189 -0
  48. package/esm2022/lib/services/request-manager-services/rxjs-operators/countdown.mjs +9 -0
  49. package/esm2022/lib/services/request-manager-services/rxjs-operators/delay-retry.mjs +10 -0
  50. package/esm2022/lib/services/request-manager-services/rxjs-operators/index.mjs +5 -0
  51. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-polling.mjs +14 -0
  52. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-streaming.mjs +19 -0
  53. package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +267 -0
  54. package/esm2022/lib/services/request-manager-state-service/index.mjs +3 -0
  55. package/esm2022/lib/services/request-manager-state-service/models/api-request.model.mjs +20 -0
  56. package/esm2022/lib/services/request-manager-state-service/models/index.mjs +3 -0
  57. package/esm2022/lib/services/request-manager-state-service/models/request-options.model.mjs +10 -0
  58. package/esm2022/lib/services/utils/app.service.mjs +26 -0
  59. package/esm2022/lib/services/utils/encryption/asymmetrical-encryption.service.mjs +186 -0
  60. package/esm2022/lib/services/utils/encryption/encryption-test.service.mjs +35 -0
  61. package/esm2022/lib/services/utils/encryption/index.mjs +4 -0
  62. package/esm2022/lib/services/utils/encryption/random.mjs +52 -0
  63. package/esm2022/lib/services/utils/encryption/symmetrical-encryption.service.mjs +77 -0
  64. package/esm2022/lib/services/utils/headers.service.mjs +21 -0
  65. package/esm2022/lib/services/utils/index.mjs +6 -0
  66. package/esm2022/lib/services/utils/object-merger.service.mjs +50 -0
  67. package/esm2022/lib/services/utils/path-query.service.mjs +54 -0
  68. package/esm2022/lib/services/utils/utils.service.mjs +155 -0
  69. package/esm2022/public-api.mjs +11 -0
  70. package/fesm2022/http-request-manager.mjs +3444 -0
  71. package/fesm2022/http-request-manager.mjs.map +1 -0
  72. package/http-request-manager-18.0.1.tgz +0 -0
  73. package/index.d.ts +5 -0
  74. package/lib/http-request-manager.module.d.ts +33 -0
  75. package/lib/http-request-services-demo/database-data-demo/database-data-demo.component.d.ts +19 -0
  76. package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +24 -0
  77. package/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.d.ts +56 -0
  78. package/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.d.ts +26 -0
  79. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.d.ts +13 -0
  80. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.d.ts +27 -0
  81. package/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.d.ts +12 -0
  82. package/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.d.ts +16 -0
  83. package/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.d.ts +8 -0
  84. package/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.d.ts +14 -0
  85. package/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.d.ts +14 -0
  86. package/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.d.ts +107 -0
  87. package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +122 -0
  88. package/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.d.ts +15 -0
  89. package/lib/index.d.ts +3 -0
  90. package/lib/interceptors/credentials.interceptor.d.ts +8 -0
  91. package/{src/lib/interceptors/index.ts → lib/interceptors/index.d.ts} +0 -2
  92. package/lib/interceptors/models/error-settings.model.d.ts +10 -0
  93. package/lib/interceptors/proxy-debugger.interceptor.d.ts +12 -0
  94. package/lib/interceptors/request-error.interceptor.d.ts +10 -0
  95. package/lib/interceptors/request-header.interceptor.d.ts +15 -0
  96. package/lib/models/config-http-options.model.d.ts +21 -0
  97. package/lib/models/config-local-storage-options.model.d.ts +13 -0
  98. package/lib/models/config-options.model.d.ts +12 -0
  99. package/{src/lib/models/config-token.model.ts → lib/models/config-token.model.d.ts} +1 -2
  100. package/lib/models/data-type.enum.d.ts +5 -0
  101. package/lib/models/database-storage.model.d.ts +10 -0
  102. package/lib/models/index.d.ts +6 -0
  103. package/lib/models/retry-options.model.d.ts +10 -0
  104. package/lib/services/database-manager-services/database.manager.service.d.ts +31 -0
  105. package/lib/services/database-manager-services/db.storage.service.d.ts +26 -0
  106. package/{src/lib/services/database-manager-services/index.ts → lib/services/database-manager-services/index.d.ts} +0 -1
  107. package/lib/services/database-manager-services/models/table-schema.d.ts +11 -0
  108. package/{src/lib/services/index.ts → lib/services/index.d.ts} +0 -4
  109. package/lib/services/local-storage-manager-service/index.d.ts +2 -0
  110. package/lib/services/local-storage-manager-service/local-storage-manager.service.d.ts +86 -0
  111. package/lib/services/local-storage-manager-service/models/global-store-options.model.d.ts +15 -0
  112. package/{src/lib/services/local-storage-manager-service/models/index.ts → lib/services/local-storage-manager-service/models/index.d.ts} +1 -2
  113. package/lib/services/local-storage-manager-service/models/setting-options.model.d.ts +15 -0
  114. package/lib/services/local-storage-manager-service/models/storage-data.model.d.ts +10 -0
  115. package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +13 -0
  116. package/lib/services/local-storage-manager-service/models/storage-type.enum.d.ts +5 -0
  117. package/lib/services/request-manager-services/http-manager.service.d.ts +41 -0
  118. package/{src/lib/services/request-manager-services/index.ts → lib/services/request-manager-services/index.d.ts} +0 -2
  119. package/lib/services/request-manager-services/request.service.d.ts +27 -0
  120. package/lib/services/request-manager-services/rxjs-operators/countdown.d.ts +2 -0
  121. package/lib/services/request-manager-services/rxjs-operators/delay-retry.d.ts +2 -0
  122. package/lib/services/request-manager-services/rxjs-operators/request-polling.d.ts +7 -0
  123. package/lib/services/request-manager-services/rxjs-operators/request-streaming.d.ts +2 -0
  124. package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +51 -0
  125. package/{src/lib/services/request-manager-state-service/index.ts → lib/services/request-manager-state-service/index.d.ts} +0 -1
  126. package/lib/services/request-manager-state-service/models/api-request.model.d.ts +27 -0
  127. package/{src/lib/services/request-manager-state-service/models/index.ts → lib/services/request-manager-state-service/models/index.d.ts} +0 -1
  128. package/lib/services/request-manager-state-service/models/request-options.model.d.ts +10 -0
  129. package/lib/services/utils/app.service.d.ts +8 -0
  130. package/lib/services/utils/encryption/asymmetrical-encryption.service.d.ts +17 -0
  131. package/lib/services/utils/encryption/encryption-test.service.d.ts +10 -0
  132. package/{src/lib/services/utils/encryption/index.ts → lib/services/utils/encryption/index.d.ts} +0 -2
  133. package/lib/services/utils/encryption/random.d.ts +7 -0
  134. package/lib/services/utils/encryption/symmetrical-encryption.service.d.ts +14 -0
  135. package/lib/services/utils/headers.service.d.ts +10 -0
  136. package/{src/lib/services/utils/index.ts → lib/services/utils/index.d.ts} +0 -2
  137. package/lib/services/utils/object-merger.service.d.ts +12 -0
  138. package/lib/services/utils/path-query.service.d.ts +11 -0
  139. package/lib/services/utils/utils.service.d.ts +24 -0
  140. package/package.json +14 -1
  141. package/{src/public-api.ts → public-api.d.ts} +0 -7
  142. package/ng-package.json +0 -8
  143. package/src/lib/http-request-manager.module.ts +0 -101
  144. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +0 -3
  145. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  146. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +0 -105
  147. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +0 -64
  148. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +0 -6
  149. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +0 -34
  150. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +0 -195
  151. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +0 -17
  152. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +0 -205
  153. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +0 -59
  154. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
  155. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +0 -71
  156. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +0 -28
  157. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +0 -10
  158. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +0 -29
  159. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +0 -99
  160. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
  161. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
  162. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
  163. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +0 -25
  164. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +0 -30
  165. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +0 -19
  166. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +0 -25
  167. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +0 -19
  168. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +0 -24
  169. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +0 -30
  170. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +0 -49
  171. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +0 -33
  172. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +0 -336
  173. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +0 -24
  174. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +0 -403
  175. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +0 -328
  176. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +0 -24
  177. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +0 -347
  178. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +0 -88
  179. package/src/lib/index.ts +0 -3
  180. package/src/lib/interceptors/credentials.interceptor.ts +0 -18
  181. package/src/lib/interceptors/models/error-settings.model.ts +0 -22
  182. package/src/lib/interceptors/proxy-debugger.interceptor.ts +0 -46
  183. package/src/lib/interceptors/request-error.interceptor.ts +0 -65
  184. package/src/lib/interceptors/request-header.interceptor.ts +0 -58
  185. package/src/lib/models/config-http-options.model.ts +0 -42
  186. package/src/lib/models/config-local-storage-options.model.ts +0 -27
  187. package/src/lib/models/config-options.model.ts +0 -27
  188. package/src/lib/models/data-type.enum.ts +0 -5
  189. package/src/lib/models/database-storage.model.ts +0 -24
  190. package/src/lib/models/index.ts +0 -9
  191. package/src/lib/models/retry-options.model.ts +0 -22
  192. package/src/lib/services/database-manager-services/database.manager.service.ts +0 -193
  193. package/src/lib/services/database-manager-services/db.storage.service.ts +0 -191
  194. package/src/lib/services/database-manager-services/models/table-schema.ts +0 -35
  195. package/src/lib/services/local-storage-manager-service/index.ts +0 -2
  196. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +0 -71
  197. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +0 -421
  198. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +0 -30
  199. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +0 -30
  200. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +0 -24
  201. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +0 -29
  202. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +0 -5
  203. package/src/lib/services/request-manager-services/README.md +0 -268
  204. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +0 -230
  205. package/src/lib/services/request-manager-services/http-manager.service.ts +0 -274
  206. package/src/lib/services/request-manager-services/request.service.ts +0 -261
  207. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +0 -17
  208. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +0 -16
  209. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +0 -21
  210. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +0 -32
  211. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +0 -402
  212. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +0 -50
  213. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +0 -22
  214. package/src/lib/services/utils/app.service.spec.ts +0 -25
  215. package/src/lib/services/utils/app.service.ts +0 -21
  216. package/src/lib/services/utils/encryption/README.md +0 -79
  217. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +0 -282
  218. package/src/lib/services/utils/encryption/encryption-test.service.ts +0 -39
  219. package/src/lib/services/utils/encryption/random.ts +0 -69
  220. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +0 -93
  221. package/src/lib/services/utils/headers.service.spec.ts +0 -80
  222. package/src/lib/services/utils/headers.service.ts +0 -18
  223. package/src/lib/services/utils/object-merger.service.spec.ts +0 -16
  224. package/src/lib/services/utils/object-merger.service.ts +0 -60
  225. package/src/lib/services/utils/path-query.service.spec.ts +0 -117
  226. package/src/lib/services/utils/path-query.service.ts +0 -69
  227. package/src/lib/services/utils/utils.service.spec.ts +0 -164
  228. package/src/lib/services/utils/utils.service.ts +0 -192
  229. package/tsconfig.lib.json +0 -32
  230. package/tsconfig.lib.prod.json +0 -10
  231. package/tsconfig.spec.json +0 -14
  232. /package/{src/lib/services/request-manager-services/rxjs-operators/index.ts → lib/services/request-manager-services/rxjs-operators/index.d.ts} +0 -0
@@ -1,282 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
-
3
- import { BehaviorSubject, EMPTY, Observable, from, of } from 'rxjs';
4
- import { map, catchError } from 'rxjs/operators';
5
-
6
- @Injectable({
7
- providedIn: 'root'
8
- })
9
- export class AsymmetricalEncryptionService {
10
-
11
- constructor() {}
12
-
13
- generateKeyPair(modulusLength = 2048): Observable<CryptoKeyPair> {
14
-
15
- // modulusLength - 1024, 2048, 4096
16
- // hash - SHA-256
17
-
18
- return from(crypto.subtle.generateKey(
19
- {
20
- name: "RSA-OAEP",
21
- modulusLength,
22
- publicExponent: new Uint8Array([1, 0, 1]), // 65537
23
- hash: { name: "SHA-256" }
24
- },
25
- true, // Extractable keys
26
- ["encrypt", "decrypt"]
27
- ))
28
-
29
- }
30
-
31
- encryptData(publicKey: CryptoKey, data: string) {
32
-
33
- const encodedData = new TextEncoder().encode(data)
34
-
35
- return from(crypto.subtle.encrypt(
36
- {
37
- name: "RSA-OAEP"
38
- },
39
- publicKey,
40
- encodedData
41
- )).pipe(
42
- map(enc => this.arrayBufferToBase64(enc))
43
- )
44
-
45
- }
46
-
47
- decryptData(privateKey: CryptoKey, encryptedData: string) {
48
-
49
- const encStr = this.base64ToArrayBuffer(encryptedData)
50
-
51
- return from(crypto.subtle.decrypt(
52
- {
53
- name: "RSA-OAEP"
54
- },
55
- privateKey,
56
- encStr
57
- ).then(decryptedData => {
58
- return new TextDecoder().decode(decryptedData)
59
- }))
60
-
61
- }
62
-
63
- pemToArrayBuffer(pem: string): ArrayBuffer {
64
-
65
- const b64 = pem.replace(/(-----BEGIN (RSA )?(PRIVATE|PUBLIC) KEY-----|-----END (RSA )?(PRIVATE|PUBLIC) KEY-----|\n)/g, '')
66
- const binaryString = atob(b64)
67
- const len = binaryString.length
68
- const buffer = new ArrayBuffer(len)
69
- const view = new Uint8Array(buffer)
70
-
71
- for (let i = 0; i < len; i++) {
72
- view[i] = binaryString.charCodeAt(i)
73
- }
74
-
75
- return buffer
76
-
77
- }
78
-
79
- base64ToArrayBuffer(base64: string): ArrayBuffer {
80
-
81
- const binaryString = atob(base64);
82
- const len = binaryString.length;
83
- const buffer = new ArrayBuffer(len);
84
- const view = new Uint8Array(buffer);
85
-
86
- for (let i = 0; i < len; i++) {
87
- view[i] = binaryString.charCodeAt(i);
88
- }
89
-
90
- return buffer;
91
- }
92
-
93
- arrayBufferToBase64(buffer: ArrayBuffer): string {
94
-
95
- let binary = '';
96
- const bytes = new Uint8Array(buffer);
97
- const len = bytes.byteLength;
98
-
99
- for (let i = 0; i < len; i++) {
100
- binary += String.fromCharCode(bytes[i]);
101
- }
102
-
103
- return window.btoa(binary)
104
-
105
- }
106
-
107
- base64ToPEM(base64Key: string, publicKey = true) {
108
-
109
- const keyType = (publicKey) ? 'PUBLIC' : 'PRIVATE'
110
-
111
- const header = `-----BEGIN ${keyType} KEY-----\n`
112
- const footer = `\n-----END ${keyType} KEY-----`
113
-
114
- const keyBody = base64Key.match(/.{1,64}/g)?.join("\n") || ""
115
-
116
- return header + keyBody + footer
117
-
118
- }
119
-
120
- pemToCryptoKey(
121
- pem: string,
122
- algorithm: RsaHashedKeyGenParams,
123
- extractable: boolean,
124
- keyUsages: KeyUsage[],
125
- format: any = "pkcs8" //"raw" | "pkcs8" | "spki"
126
- ) {
127
-
128
- const buffer = this.pemToArrayBuffer(pem);
129
-
130
- console.log('buffer found ', buffer);
131
-
132
- return from(crypto.subtle.importKey(
133
- format,
134
- buffer,
135
- algorithm,
136
- extractable,
137
- keyUsages
138
- ))
139
-
140
- }
141
-
142
- // TESTING
143
-
144
- testGenerateKeys(): Observable<string> {
145
- const testSequence: BehaviorSubject<string> = new BehaviorSubject<string>("");
146
- const testSequence$: Observable<string> = testSequence.asObservable();
147
- testSequence.next("Test Generating Keys");
148
-
149
- // GENERATE KEYS
150
- this.generateKeyPair().subscribe((data) => {
151
-
152
- console.log("GEN-GENERATED KEYS: ", data)
153
-
154
- crypto.subtle.exportKey('spki', data.publicKey)
155
- .then(key => {
156
- const publicKeyBase64 = this.arrayBufferToBase64(key);
157
- console.log("GEN-EXPORT PUBLIC KEY: ", this.base64ToPEM(publicKeyBase64, true));
158
- })
159
-
160
- crypto.subtle.exportKey('pkcs8', data.privateKey)
161
- .then(key => {
162
- const privateKeyBase64 = this.arrayBufferToBase64(key);
163
- console.log("GEN-EXPORT PRIVATE KEY: ", this.base64ToPEM(privateKeyBase64, false));
164
- });
165
-
166
- // TEST WITH GENERATED KEYS
167
- this.encryptData(data.publicKey, "Sample Data here - Mike Bonifacio")
168
- .subscribe((enc) => {
169
-
170
- console.log("GEN-ENCRYPT==>: ", enc)
171
-
172
- this.decryptData(data.privateKey, enc).subscribe((dec) => {
173
- testSequence.next('Test Passed');
174
- testSequence.complete();
175
- })
176
-
177
- })
178
-
179
- })
180
- return testSequence$;
181
-
182
- }
183
-
184
- testDecryptionWithKeys(): Observable<string> {
185
- const testSequence: BehaviorSubject<string> = new BehaviorSubject<string>("");
186
- const testSequence$: Observable<string> = testSequence.asObservable();
187
- testSequence.next("Test Generating Keys");
188
-
189
- const privateKey = `-----BEGIN PRIVATE KEY-----
190
- MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDKVBkCWNb9eHVF
191
- twAA5mdAyvXFix3WavdrsoYRkvtCl8ogDBQf8f6N0bRkDF1zcVHRrNAEyozXDtuD
192
- kFgSiivBFREI7fiS3sOvduq6FaGXzX0IY6oaVMu8oOPgDvC0yvoohR+0Qxq2d6lP
193
- SPyHeKQaxP4KxzCJJzB1XAcbd2eFzUUDv25mNlwdVkmW8FI/sAxnJLgPTW78dzfX
194
- Ddfk+nxdIqxVKSLATnL0kMN7aGJx24UozioAIpzvvvF5/+7HTd1gi6NeCqrAYr3g
195
- iP364AE26CFwFvHnafO9uNQhlQ+uiNnOoInXByfFGVP+RidSpfLzaxDjs6RDwpol
196
- h098btONAgMBAAECggEAAVhHM2OD5IkUtuowwcKNaCTKGmrClRE3gMuzJeBsSJEy
197
- uAReUFILZylcnhegDytSti2vDA9T7xqtO6CU0p3V8LpU89JMOPRb/deirI4UXSpx
198
- xbNyjirOO6bnrNlOWfKexdQQsikYPzF2iM1Scpr1u9ZDCHZOl1ZYSrkve5My4coP
199
- 3Gx6tTBqL0jQBfcpf4ES8BH3JSawR/MgqzDS74+bI2VH+kvuPAC1L4fBgaV3VUv0
200
- nFzim5A3s5VaXPgJbEIghP9BkYGFkeT9ma3nliEZWc96AzsmowFn1ayCvrNVPo9R
201
- ECD2NnttBiCJZt3H93sR9+OTeA8Bls+aZGlKd5mLAQKBgQDpf8nIYUm/Zmls7/lQ
202
- QBUSGHEYrbjNsEejQsPgNDtg2EVSxdUkvTn7Wb+HExTk09Z5bNvhaO2532/FH9y8
203
- ahSXafiMXpfR2olwXdOB9yXXl4F5C0LGnmzGim4OSeWzAX0JCL470KaS0QN3EmoG
204
- 9F0YCfMnZXNTweSSx4xvlO6ggQKBgQDd01uIolm7z1DIWCwNERAXP2GDwcvxyzYK
205
- YqJfKDeHt2t6yIzZMMotnPDy+OlcdGspIIHkB5a+SZN5Nt7DUKg/MnyOZ3KbVq41
206
- k7dR4Ka3LRnGkesy7lSr7ef1rfquyR75OXJQcPWvkFcLu0TMiQhvptatZ8VN+F4n
207
- fDQELRotDQKBgQCgN+AUT7VT0QjcCBnRV/ddUEoiPenFsYSmYMSYzh5ESIHg1wB2
208
- 0iS79Iw4Of6nOTg8X1bM57vfQ5Kk90T2P+/bKYqzfqC8DTErWiYsUpKzyTC9Bt4N
209
- /Vz0Kr5zrX8ggg/yp/4oevYhXav8AzWfigNq4EDpMnKc8TlPAf+5/L50gQKBgQC2
210
- mLPhPhr1gUszD3l7bA89w7uGlLFHoQoj9FtKTzWervp3QLzIT+QtNeIVb5XQuDg5
211
- y3uAdEq+6pvNjMBEMJG+K9Xh9v+dJPYUPjsJ2A4D/MkZ7qWX8B2cxSJK1uLim8W2
212
- S3ZxBvsGgJ9WldmlMCvUlJZkeWYtr4P5psC+q02/xQKBgQCDII/jcV2+lRM2iNTe
213
- vBijZSaNMEWOK/Y+/HFK8GYKXnB+xNWhrm8rKgWGzpDJAUPMh9Tt+leW9LKEBuzF
214
- Y1bGblmGm1zsPWpIx05Fdtv9eOJmFnXbGzIsYyhadZnPcQOWhqxtpVxSuul0Jc7Q
215
- XNq4qPaPXhbQAshgtyBt75DMkw==
216
- -----END PRIVATE KEY-----`
217
-
218
- const pubKey = `-----BEGIN PUBLIC KEY-----
219
- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAylQZAljW/Xh1RbcAAOZn
220
- QMr1xYsd1mr3a7KGEZL7QpfKIAwUH/H+jdG0ZAxdc3FR0azQBMqM1w7bg5BYEoor
221
- wRURCO34kt7Dr3bquhWhl819CGOqGlTLvKDj4A7wtMr6KIUftEMatnepT0j8h3ik
222
- GsT+CscwiScwdVwHG3dnhc1FA79uZjZcHVZJlvBSP7AMZyS4D01u/Hc31w3X5Pp8
223
- XSKsVSkiwE5y9JDDe2hicduFKM4qACKc777xef/ux03dYIujXgqqwGK94Ij9+uAB
224
- NughcBbx52nzvbjUIZUProjZzqCJ1wcnxRlT/kYnUqXy82sQ47OkQ8KaJYdPfG7T
225
- jQIDAQAB
226
- -----END PUBLIC KEY-----`
227
-
228
- const algorithm: RsaHashedKeyGenParams = {
229
- name: "RSA-OAEP",
230
- modulusLength: 2048,
231
- publicExponent: new Uint8Array([1, 0, 1]),
232
- hash: "SHA-256"
233
- };
234
-
235
- // ENCRYPT
236
- this.pemToCryptoKey(
237
- pubKey,
238
- algorithm,
239
- true,
240
- ["encrypt"],
241
- "spki"
242
- ).subscribe((keyPublic) => {
243
-
244
- // console.log("PUBLIC KEY: ", keyPublic)
245
-
246
- this.encryptData(keyPublic, "Sample Data here - Mike Bonifacio")
247
- .subscribe((str) => {
248
- console.log("ENCRYPTED STRING: ", str);
249
- testSequence.next('encrypted string success');
250
- })
251
-
252
- })
253
-
254
- const enc = "r7UOuEGBZ6jbVTOIBuv9jFOEtRiedmS27hfW40k7XKCTsQ5VhWup0qu2BA2ANZaGKii/uehJ/RSPiyfGbJ6leJrat0mA1hPqH/XodaBzLMDigvdYM1NSXFZMDa40OpLUIXbPlAvybjcGu7Bal+LMA8htHrFu/OmM/fHI66xOzzpuXSYx0OkWjtY81rUQ1FFkvrkx2jGFPZ0p+Nw/v3Q4cJnet6V63vCueFlD749VMcVXo7pvz4AIPpB+IOy3kbxaYTPakLVioJERU6GFMXWkECuRvohhS9CETcORZtRVRkvhcHk3lxgIhfqojUKYgD6K5dDELDPsWIS+iTG1XIQIlg==";
255
-
256
- // DECRYPTION
257
- this.pemToCryptoKey(
258
- privateKey,
259
- algorithm,
260
- false,
261
- ["decrypt"],
262
- "pkcs8"
263
- ).subscribe((key) => {
264
-
265
- // console.log("DECRYPT ===", key)
266
-
267
- this.decryptData(key, enc)
268
- .pipe(
269
- catchError(err => {
270
- console.log("ERROR: ", err);
271
- return EMPTY
272
- })
273
- ).subscribe((str) => {
274
- console.log("DECRYPTED STRING: ", str);
275
- testSequence.next('decrypted string success');
276
- })
277
-
278
- })
279
-
280
- return testSequence$;
281
- };
282
- }
@@ -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,69 +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
-
@@ -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,16 +0,0 @@
1
- /* tslint:disable:no-unused-variable */
2
-
3
- import { TestBed, async, inject } from '@angular/core/testing';
4
- import { ObjectMergerService } from './object-merger.service';
5
-
6
- describe('Service: ObjectMerger', () => {
7
- beforeEach(() => {
8
- TestBed.configureTestingModule({
9
- providers: [ObjectMergerService]
10
- });
11
- });
12
-
13
- it('should ...', inject([ObjectMergerService], (service: ObjectMergerService) => {
14
- expect(service).toBeTruthy();
15
- }));
16
- });
@@ -1,60 +0,0 @@
1
- import { Inject, Injectable, Optional } from '@angular/core';
2
-
3
- import { ApiRequest } from '../request-manager-state-service/models';
4
- import { SettingOptions } from '../local-storage-manager-service';
5
-
6
- import { CONFIG_SETTINGS_TOKEN } from '../../models/config-token.model';
7
- import { ConfigHTTPOptions, ConfigOptions, LocalStorageOptions } from '../request-manager-services';
8
-
9
- @Injectable({
10
- providedIn: 'root'
11
- })
12
- export class ObjectMergerService {
13
-
14
- constructor(@Inject(CONFIG_SETTINGS_TOKEN) @Optional() private configOptions?: ConfigOptions) {
15
- if (!this.configOptions) this.configOptions = ConfigOptions.adapt()
16
- }
17
-
18
- mergeOptions(options = ApiRequest.adapt()) {
19
-
20
- const configForRoot = (this.configOptions?.httpRequestOptions) ? this.configOptions.httpRequestOptions : ConfigHTTPOptions.adapt()
21
- const mergedOptions = ApiRequest.adapt(options)
22
-
23
- mergedOptions.server = (options && options.server === '') ? configForRoot?.server || '' : options.server
24
-
25
- mergedOptions.path = [ ...options.path || [], ...configForRoot?.path || [] ]
26
-
27
- mergedOptions.headers = { ...options.headers || {}, ...configForRoot?.headers || {} }
28
-
29
- mergedOptions.retry = (options && (options?.retry?.times !== 0 || options?.retry?.delay !== 3)) ? options.retry : configForRoot?.retry || { times: 0, delay: 3 };
30
-
31
- mergedOptions.polling = (options && options?.polling !== 0) ? options.polling : configForRoot?.polling || 0;
32
-
33
- mergedOptions.displayError = (options && options?.displayError) ? options.displayError : configForRoot?.displayError || false;
34
-
35
- mergedOptions.stream = (options && options?.stream) ? options.stream : configForRoot?.stream || false;
36
-
37
- return mergedOptions;
38
-
39
- }
40
-
41
- mergeStorageOptions(options = SettingOptions.adapt()) {
42
-
43
- const configForRoot = (this.configOptions?.LocalStorageOptions) ? this.configOptions.LocalStorageOptions : LocalStorageOptions.adapt()
44
- const configForRootOptions = configForRoot.options || LocalStorageOptions.adapt().options
45
-
46
- const mergedOptions = SettingOptions.adapt(options)
47
-
48
- mergedOptions.storage = (options && options.storage === 0) ? configForRootOptions?.storage || 0 : options.storage
49
-
50
- mergedOptions.expires = (options && options.expires === 0) ? configForRootOptions?.expires || 0 : options.expires
51
-
52
- mergedOptions.expiresIn = (options && options.expiresIn === '') ? configForRootOptions?.expiresIn || '' : options.expiresIn
53
-
54
- mergedOptions.encrypted = (options && !options.encrypted) ? configForRootOptions?.encrypted || false : options.encrypted
55
-
56
- return mergedOptions;
57
-
58
- }
59
-
60
- }