http-request-manager 15.0.19 → 15.0.26

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 (224) hide show
  1. package/ng-package.json +8 -0
  2. package/package.json +10 -14
  3. package/src/lib/http-request-manager.module.ts +101 -0
  4. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +3 -0
  5. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  6. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +105 -0
  7. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +64 -0
  8. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +6 -0
  9. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +34 -0
  10. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +195 -0
  11. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +17 -0
  12. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +205 -0
  13. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +59 -0
  14. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  15. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +71 -0
  16. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +28 -0
  17. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +10 -0
  18. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  19. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +99 -0
  20. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  21. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  22. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  23. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +25 -0
  24. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +30 -0
  25. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +19 -0
  26. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +25 -0
  27. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +19 -0
  28. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +24 -0
  29. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +30 -0
  30. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +49 -0
  31. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +33 -0
  32. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +336 -0
  33. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +24 -0
  34. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +403 -0
  35. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +328 -0
  36. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +24 -0
  37. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +347 -0
  38. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +88 -0
  39. package/src/lib/index.ts +3 -0
  40. package/src/lib/interceptors/credentials.interceptor.ts +18 -0
  41. package/{lib/interceptors/index.d.ts → src/lib/interceptors/index.ts} +2 -0
  42. package/src/lib/interceptors/models/error-settings.model.ts +22 -0
  43. package/src/lib/interceptors/proxy-debugger.interceptor.ts +46 -0
  44. package/src/lib/interceptors/request-error.interceptor.ts +65 -0
  45. package/src/lib/interceptors/request-header.interceptor.ts +58 -0
  46. package/src/lib/models/config-http-options.model.ts +42 -0
  47. package/src/lib/models/config-local-storage-options.model.ts +27 -0
  48. package/src/lib/models/config-options.model.ts +27 -0
  49. package/{lib/models/config-token.model.d.ts → src/lib/models/config-token.model.ts} +2 -1
  50. package/src/lib/models/data-type.enum.ts +5 -0
  51. package/src/lib/models/database-storage.model.ts +24 -0
  52. package/src/lib/models/index.ts +9 -0
  53. package/src/lib/models/retry-options.model.ts +22 -0
  54. package/src/lib/services/database-manager-services/database.manager.service.ts +193 -0
  55. package/src/lib/services/database-manager-services/db.storage.service.ts +191 -0
  56. package/src/lib/services/database-manager-services/index.ts +4 -0
  57. package/src/lib/services/database-manager-services/models/table-schema.ts +35 -0
  58. package/{lib/services/index.d.ts → src/lib/services/index.ts} +4 -0
  59. package/src/lib/services/local-storage-manager-service/index.ts +2 -0
  60. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +71 -0
  61. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +421 -0
  62. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +30 -0
  63. package/{lib/services/local-storage-manager-service/models/index.d.ts → src/lib/services/local-storage-manager-service/models/index.ts} +2 -1
  64. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +30 -0
  65. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +24 -0
  66. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +29 -0
  67. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +5 -0
  68. package/src/lib/services/request-manager-services/README.md +268 -0
  69. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +230 -0
  70. package/src/lib/services/request-manager-services/http-manager.service.ts +274 -0
  71. package/{lib/services/request-manager-services/index.d.ts → src/lib/services/request-manager-services/index.ts} +2 -0
  72. package/src/lib/services/request-manager-services/request.service.ts +261 -0
  73. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +17 -0
  74. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +16 -0
  75. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +21 -0
  76. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +32 -0
  77. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +402 -0
  78. package/{lib/services/request-manager-state-service/index.d.ts → src/lib/services/request-manager-state-service/index.ts} +1 -0
  79. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +50 -0
  80. package/{lib/services/request-manager-state-service/models/index.d.ts → src/lib/services/request-manager-state-service/models/index.ts} +1 -0
  81. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +22 -0
  82. package/src/lib/services/utils/app.service.spec.ts +25 -0
  83. package/src/lib/services/utils/app.service.ts +21 -0
  84. package/src/lib/services/utils/encryption/README.md +79 -0
  85. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +282 -0
  86. package/src/lib/services/utils/encryption/encryption-test.service.ts +39 -0
  87. package/{lib/services/utils/encryption/index.d.ts → src/lib/services/utils/encryption/index.ts} +2 -0
  88. package/src/lib/services/utils/encryption/random.ts +69 -0
  89. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +93 -0
  90. package/src/lib/services/utils/headers.service.spec.ts +80 -0
  91. package/src/lib/services/utils/headers.service.ts +18 -0
  92. package/{lib/services/utils/index.d.ts → src/lib/services/utils/index.ts} +2 -0
  93. package/src/lib/services/utils/object-merger.service.spec.ts +16 -0
  94. package/src/lib/services/utils/object-merger.service.ts +60 -0
  95. package/src/lib/services/utils/path-query.service.spec.ts +117 -0
  96. package/src/lib/services/utils/path-query.service.ts +69 -0
  97. package/src/lib/services/utils/utils.service.spec.ts +164 -0
  98. package/src/lib/services/utils/utils.service.ts +192 -0
  99. package/src/public-api.ts +14 -0
  100. package/tsconfig.lib.json +32 -0
  101. package/tsconfig.lib.prod.json +10 -0
  102. package/tsconfig.spec.json +14 -0
  103. package/esm2022/http-request-manager.mjs +0 -5
  104. package/esm2022/lib/http-request-manager.module.mjs +0 -146
  105. package/esm2022/lib/http-request-services-demo/http-request-services-demo.component.mjs +0 -41
  106. package/esm2022/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.mjs +0 -173
  107. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.mjs +0 -80
  108. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.mjs +0 -42
  109. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.mjs +0 -88
  110. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.mjs +0 -11
  111. package/esm2022/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.mjs +0 -29
  112. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.mjs +0 -9
  113. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.mjs +0 -12
  114. package/esm2022/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.mjs +0 -14
  115. package/esm2022/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.mjs +0 -315
  116. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.mjs +0 -270
  117. package/esm2022/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.mjs +0 -67
  118. package/esm2022/lib/index.mjs +0 -4
  119. package/esm2022/lib/interceptors/credentials.interceptor.mjs +0 -14
  120. package/esm2022/lib/interceptors/index.mjs +0 -5
  121. package/esm2022/lib/interceptors/models/error-settings.model.mjs +0 -10
  122. package/esm2022/lib/interceptors/proxy-debugger.interceptor.mjs +0 -47
  123. package/esm2022/lib/interceptors/request-error.interceptor.mjs +0 -49
  124. package/esm2022/lib/interceptors/request-header.interceptor.mjs +0 -41
  125. package/esm2022/lib/models/config-http-options.model.mjs +0 -18
  126. package/esm2022/lib/models/config-local-storage-options.model.mjs +0 -12
  127. package/esm2022/lib/models/config-options.model.mjs +0 -12
  128. package/esm2022/lib/models/config-token.model.mjs +0 -8
  129. package/esm2022/lib/models/data-type.enum.mjs +0 -7
  130. package/esm2022/lib/models/database-storage.model.mjs +0 -10
  131. package/esm2022/lib/models/index.mjs +0 -7
  132. package/esm2022/lib/models/retry-options.model.mjs +0 -10
  133. package/esm2022/lib/services/index.mjs +0 -6
  134. package/esm2022/lib/services/local-storage-manager-service/index.mjs +0 -3
  135. package/esm2022/lib/services/local-storage-manager-service/local-storage-manager.service.mjs +0 -302
  136. package/esm2022/lib/services/local-storage-manager-service/models/global-store-options.model.mjs +0 -13
  137. package/esm2022/lib/services/local-storage-manager-service/models/index.mjs +0 -6
  138. package/esm2022/lib/services/local-storage-manager-service/models/setting-options.model.mjs +0 -13
  139. package/esm2022/lib/services/local-storage-manager-service/models/storage-data.model.mjs +0 -10
  140. package/esm2022/lib/services/local-storage-manager-service/models/storage-option.model.mjs +0 -12
  141. package/esm2022/lib/services/local-storage-manager-service/models/storage-type.enum.mjs +0 -7
  142. package/esm2022/lib/services/request-manager-services/http-manager.service.mjs +0 -207
  143. package/esm2022/lib/services/request-manager-services/index.mjs +0 -5
  144. package/esm2022/lib/services/request-manager-services/request.service.mjs +0 -189
  145. package/esm2022/lib/services/request-manager-services/rxjs-operators/countdown.mjs +0 -9
  146. package/esm2022/lib/services/request-manager-services/rxjs-operators/delay-retry.mjs +0 -10
  147. package/esm2022/lib/services/request-manager-services/rxjs-operators/index.mjs +0 -5
  148. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-polling.mjs +0 -14
  149. package/esm2022/lib/services/request-manager-services/rxjs-operators/request-streaming.mjs +0 -19
  150. package/esm2022/lib/services/request-manager-state-service/http-manager-state.store.mjs +0 -267
  151. package/esm2022/lib/services/request-manager-state-service/index.mjs +0 -3
  152. package/esm2022/lib/services/request-manager-state-service/models/api-request.model.mjs +0 -20
  153. package/esm2022/lib/services/request-manager-state-service/models/index.mjs +0 -3
  154. package/esm2022/lib/services/request-manager-state-service/models/request-options.model.mjs +0 -10
  155. package/esm2022/lib/services/utils/app.service.mjs +0 -26
  156. package/esm2022/lib/services/utils/encryption/asymmetrical-encryption.service.mjs +0 -186
  157. package/esm2022/lib/services/utils/encryption/encryption-test.service.mjs +0 -35
  158. package/esm2022/lib/services/utils/encryption/index.mjs +0 -4
  159. package/esm2022/lib/services/utils/encryption/random.mjs +0 -52
  160. package/esm2022/lib/services/utils/encryption/symmetrical-encryption.service.mjs +0 -77
  161. package/esm2022/lib/services/utils/headers.service.mjs +0 -21
  162. package/esm2022/lib/services/utils/index.mjs +0 -6
  163. package/esm2022/lib/services/utils/object-merger.service.mjs +0 -50
  164. package/esm2022/lib/services/utils/path-query.service.mjs +0 -54
  165. package/esm2022/lib/services/utils/utils.service.mjs +0 -155
  166. package/esm2022/public-api.mjs +0 -7
  167. package/fesm2022/http-request-manager.mjs +0 -3102
  168. package/fesm2022/http-request-manager.mjs.map +0 -1
  169. package/http-request-manager-15.0.19.tgz +0 -0
  170. package/index.d.ts +0 -5
  171. package/lib/http-request-manager.module.d.ts +0 -33
  172. package/lib/http-request-services-demo/http-request-services-demo.component.d.ts +0 -24
  173. package/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.d.ts +0 -56
  174. package/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.d.ts +0 -26
  175. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.d.ts +0 -13
  176. package/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.d.ts +0 -27
  177. package/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.d.ts +0 -12
  178. package/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.d.ts +0 -16
  179. package/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.d.ts +0 -8
  180. package/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.d.ts +0 -14
  181. package/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.d.ts +0 -14
  182. package/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.d.ts +0 -107
  183. package/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.d.ts +0 -122
  184. package/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.d.ts +0 -15
  185. package/lib/index.d.ts +0 -3
  186. package/lib/interceptors/credentials.interceptor.d.ts +0 -8
  187. package/lib/interceptors/models/error-settings.model.d.ts +0 -10
  188. package/lib/interceptors/proxy-debugger.interceptor.d.ts +0 -12
  189. package/lib/interceptors/request-error.interceptor.d.ts +0 -10
  190. package/lib/interceptors/request-header.interceptor.d.ts +0 -15
  191. package/lib/models/config-http-options.model.d.ts +0 -21
  192. package/lib/models/config-local-storage-options.model.d.ts +0 -13
  193. package/lib/models/config-options.model.d.ts +0 -12
  194. package/lib/models/data-type.enum.d.ts +0 -5
  195. package/lib/models/database-storage.model.d.ts +0 -10
  196. package/lib/models/index.d.ts +0 -6
  197. package/lib/models/retry-options.model.d.ts +0 -10
  198. package/lib/services/local-storage-manager-service/index.d.ts +0 -2
  199. package/lib/services/local-storage-manager-service/local-storage-manager.service.d.ts +0 -86
  200. package/lib/services/local-storage-manager-service/models/global-store-options.model.d.ts +0 -15
  201. package/lib/services/local-storage-manager-service/models/setting-options.model.d.ts +0 -15
  202. package/lib/services/local-storage-manager-service/models/storage-data.model.d.ts +0 -10
  203. package/lib/services/local-storage-manager-service/models/storage-option.model.d.ts +0 -13
  204. package/lib/services/local-storage-manager-service/models/storage-type.enum.d.ts +0 -5
  205. package/lib/services/request-manager-services/http-manager.service.d.ts +0 -41
  206. package/lib/services/request-manager-services/request.service.d.ts +0 -27
  207. package/lib/services/request-manager-services/rxjs-operators/countdown.d.ts +0 -2
  208. package/lib/services/request-manager-services/rxjs-operators/delay-retry.d.ts +0 -2
  209. package/lib/services/request-manager-services/rxjs-operators/request-polling.d.ts +0 -7
  210. package/lib/services/request-manager-services/rxjs-operators/request-streaming.d.ts +0 -2
  211. package/lib/services/request-manager-state-service/http-manager-state.store.d.ts +0 -51
  212. package/lib/services/request-manager-state-service/models/api-request.model.d.ts +0 -27
  213. package/lib/services/request-manager-state-service/models/request-options.model.d.ts +0 -10
  214. package/lib/services/utils/app.service.d.ts +0 -8
  215. package/lib/services/utils/encryption/asymmetrical-encryption.service.d.ts +0 -17
  216. package/lib/services/utils/encryption/encryption-test.service.d.ts +0 -10
  217. package/lib/services/utils/encryption/random.d.ts +0 -7
  218. package/lib/services/utils/encryption/symmetrical-encryption.service.d.ts +0 -14
  219. package/lib/services/utils/headers.service.d.ts +0 -10
  220. package/lib/services/utils/object-merger.service.d.ts +0 -12
  221. package/lib/services/utils/path-query.service.d.ts +0 -11
  222. package/lib/services/utils/utils.service.d.ts +0 -24
  223. package/public-api.d.ts +0 -3
  224. /package/{lib/services/request-manager-services/rxjs-operators/index.d.ts → src/lib/services/request-manager-services/rxjs-operators/index.ts} +0 -0
@@ -0,0 +1,191 @@
1
+ import { Injectable } from '@angular/core';
2
+ import Dexie, {Table} from 'dexie';
3
+
4
+ @Injectable({
5
+ providedIn: 'root',
6
+ })
7
+ export class DbService extends Dexie {
8
+
9
+ storageDB = "global_storage_db"
10
+
11
+ db = new Dexie(this.storageDB)
12
+
13
+ get vr() {
14
+ return (this.db.verno === 0) ? 1 : this.db.verno + 1
15
+ }
16
+
17
+ get nextVr() {
18
+ return this.vr + 1
19
+ }
20
+
21
+ get getTables() {
22
+ return this.db.tables.map(item => item.name)
23
+ }
24
+
25
+ async hasDatabase() {
26
+ return await Dexie.exists(this.storageDB).then((res) => {
27
+ this.createNewDatabase()
28
+ return res
29
+ })
30
+ }
31
+
32
+ getTable = (table: string) => {
33
+ return this.db.tables.find(item => item.name === table)
34
+ }
35
+
36
+ tableExists = (table: string) => {
37
+ return (this.getTables.find(item => item === table)) ? true : false
38
+ }
39
+
40
+ constructor() {
41
+
42
+ super("global_storage_db")
43
+
44
+ this.db = this
45
+ this.open().then(data => {
46
+
47
+ }).catch(err => {
48
+ this.createNewDatabase()
49
+ })
50
+
51
+ }
52
+
53
+ protected async updateTable(table: string, find: { key: string, value: string|number }, data: any) {
54
+
55
+ const tableSource = this.getTable(table)
56
+
57
+ if(!tableSource || !find || !(find.key || find.value)) return false
58
+
59
+ await tableSource?.where(find.key).equals(find.value).first()
60
+ .then(async (rec: any) => {
61
+ const newRec = this.updateObjectKeys(rec, data)
62
+ await tableSource?.update(rec.id, newRec)
63
+ })
64
+
65
+ return true
66
+
67
+ }
68
+
69
+ protected async createNewDatabase() {
70
+
71
+ const db = new Dexie('global_storage_db');
72
+
73
+ if (!await Dexie.exists(db.name)) {
74
+ db.version(1).stores({})
75
+ }
76
+
77
+ await db.open()
78
+
79
+ }
80
+
81
+ // async createTable(table: string, schema: string) {
82
+ protected async createTable(table: string, schema: string) {
83
+
84
+ // console.log('createTable:', table, schema)
85
+
86
+ this.hasDatabase().then(async(res) => {
87
+
88
+ const tableDef = this.normalizeString(table)
89
+ const schemaDef = this.normalizeString(schema)
90
+
91
+ table = tableDef || ''
92
+ schema = schemaDef || ''
93
+
94
+ if(table === '' || schema === '') return
95
+
96
+ if(!this.db.isOpen()) {
97
+ await this.db.open()
98
+ .then( async () => {
99
+ this.create(table, schema)
100
+ // console.log('OPENED', table)
101
+ })
102
+ .catch(() => {
103
+ // console.log('FAILED', table)
104
+ })
105
+
106
+ } else {
107
+ this.create(table, schema)
108
+ }
109
+
110
+ const hasTable = this.getTable(table)
111
+
112
+ if(!hasTable) {
113
+ setTimeout(() => {
114
+ this.createTable.bind(this, table, schema)
115
+ this.create(table, schema)
116
+ }, 300)
117
+ }
118
+
119
+ // console.log('DB HAS', table, hasTable)
120
+
121
+ })
122
+
123
+ }
124
+
125
+ private async create(table: string, schema: string) {
126
+
127
+ // console.log('OPEN', this.db.name, this.vr, this.db.verno, 'OPEN',this.db.isOpen())
128
+
129
+ if(!this.tableExists(table)) {
130
+
131
+ if(this.db.isOpen()) await this.db.close()
132
+
133
+ const newSchema: any = { [table]: schema }
134
+ await this.db.version(this.nextVr).stores(newSchema)
135
+
136
+ // console.log('Created New Table: ', table, schema)
137
+
138
+ if(!this.db.isOpen()) await this.db.open()
139
+ }
140
+
141
+ }
142
+
143
+ private updateObjectKeys(obj1: any, obj2: any) {
144
+
145
+ return Object.keys(obj1).reduce((updatedObj: any, key: any) => {
146
+ updatedObj[key] = obj2.hasOwnProperty(key) ? obj2[key] : obj1[key]
147
+ return updatedObj
148
+ }, {})
149
+
150
+ }
151
+
152
+ protected async DBOpened() {
153
+
154
+ if(!this.db.isOpen()) {
155
+ await this.db.open()
156
+ .then( async () => {
157
+ // console.log('OPENED')
158
+ })
159
+ .catch(async (err) => {
160
+ // console.log('OPENED ERR')
161
+ return false
162
+ })
163
+ } else {
164
+ // console.log('OPENED')
165
+ }
166
+
167
+ return true
168
+
169
+ }
170
+
171
+ private normalizeString(item: string|string[]) {
172
+
173
+ if(!item) return
174
+
175
+ return Array.isArray(item) ?
176
+ item.map((item: string) => this.cleanString(item)).join()
177
+ : item.split(',').map((item: string) => this.cleanString(item)).join()
178
+
179
+ }
180
+
181
+ private cleanString(str: string): string {
182
+
183
+ const cleanStr = str
184
+ .replace(/[^a-zA-Z0-9\s]/g, '')
185
+ .replace(/\s+/g, '_')
186
+
187
+ return cleanStr.trim().toLowerCase()
188
+
189
+ }
190
+
191
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./models/table-schema";
2
+
3
+ export * from "./database.manager.service";
4
+ export * from "./db.storage.service";
@@ -0,0 +1,35 @@
1
+ export interface TableSchemaDefInterface {
2
+ table: string
3
+ schema: string
4
+ }
5
+
6
+ export class TableSchemaDef implements TableSchemaDefInterface {
7
+ constructor(
8
+ public table = 'unknown',
9
+ public schema: string = '',
10
+ ) {}
11
+
12
+ static adapt(item?: any): TableSchemaDef {
13
+
14
+ const schemaArray = (item?.schema && Array.isArray(item.schema)) ? item.schema : item.schema.split(',')
15
+ const schema = schemaArray.map((item: string) => this.cleanString(item)).join()
16
+
17
+ return new TableSchemaDef(
18
+ (item?.table) ? this.cleanString(item.table) : 'unknown',
19
+ schema,
20
+ )
21
+
22
+ }
23
+
24
+ static cleanString(str: string): string {
25
+ const camelCaseSplit = str.replace(/([a-z])([A-Z])/g, '$1 $2')
26
+
27
+ const cleanStr = camelCaseSplit
28
+ .replace(/[^a-zA-Z0-9\s]/g, '') // Remove non-alphanumeric characters except spaces
29
+ .toLowerCase() // Convert to lowercase
30
+ .trim(); // Trim any leading or trailing spaces
31
+
32
+ return cleanStr;
33
+ }
34
+
35
+ }
@@ -1,4 +1,8 @@
1
+
2
+ // export * from "./database-manager-services/index";
1
3
  export * from "./local-storage-manager-service/index";
4
+
2
5
  export * from "./request-manager-services/index";
3
6
  export * from "./request-manager-state-service/index";
7
+
4
8
  export * from "./utils/index";
@@ -0,0 +1,2 @@
1
+ export * from "./models/index"
2
+ export * from "./local-storage-manager.service";
@@ -0,0 +1,71 @@
1
+ import { TestBed } from '@angular/core/testing';
2
+ import { LocalStorageManagerService } from './local-storage-manager.service';
3
+ import { UtilsService } from '../utils/utils.service';
4
+ import { SymmetricalEncryptionService } from '../utils/encryption/symmetrical-encryption.service';
5
+ import { EncryptionTestService } from '../utils/encryption/encryption-test.service';
6
+ import { AppService } from '../utils/app.service';
7
+ import { ObjectMergerService } from '../utils/object-merger.service';
8
+
9
+ describe('LocalStorageManagerService', () => {
10
+ let service: LocalStorageManagerService;
11
+ let utilsService: jasmine.SpyObj<UtilsService>;
12
+ let encryptionService: jasmine.SpyObj<SymmetricalEncryptionService>;
13
+ let encryptionTestService: jasmine.SpyObj<EncryptionTestService>;
14
+ let appService: jasmine.SpyObj<AppService>;
15
+ let objectMergerService: jasmine.SpyObj<ObjectMergerService>;
16
+
17
+ beforeEach(() => {
18
+ localStorage.clear();
19
+ sessionStorage.clear();
20
+
21
+ const utilsSpy = jasmine.createSpyObj('UtilsService', ['expires', 'hasExpired', 'generateUUID']);
22
+ const encryptionSpy = jasmine.createSpyObj('SymmetricalEncryptionService', ['encrypt', 'decrypt']);
23
+ const encryptionTestSpy = jasmine.createSpyObj('EncryptionTestService', ['isEncrypted']);
24
+ const appServiceSpy = jasmine.createSpyObj('AppService', [], { appID: 'test-app-id' });
25
+ const objectMergerSpy = jasmine.createSpyObj('ObjectMergerService', ['mergeStorageOptions']);
26
+
27
+ utilsSpy.generateUUID.and.returnValue('test-uuid');
28
+
29
+ TestBed.configureTestingModule({
30
+ providers: [
31
+ LocalStorageManagerService,
32
+ { provide: UtilsService, useValue: utilsSpy },
33
+ { provide: SymmetricalEncryptionService, useValue: encryptionSpy },
34
+ { provide: EncryptionTestService, useValue: encryptionTestSpy },
35
+ { provide: AppService, useValue: appServiceSpy },
36
+ { provide: ObjectMergerService, useValue: objectMergerSpy }
37
+ ]
38
+ });
39
+
40
+ service = TestBed.inject(LocalStorageManagerService);
41
+ utilsService = TestBed.inject(UtilsService) as jasmine.SpyObj<UtilsService>;
42
+ encryptionService = TestBed.inject(SymmetricalEncryptionService) as jasmine.SpyObj<SymmetricalEncryptionService>;
43
+ encryptionTestService = TestBed.inject(EncryptionTestService) as jasmine.SpyObj<EncryptionTestService>;
44
+ appService = TestBed.inject(AppService) as jasmine.SpyObj<AppService>;
45
+ objectMergerService = TestBed.inject(ObjectMergerService) as jasmine.SpyObj<ObjectMergerService>;
46
+
47
+ // Setup default spy behaviors
48
+ utilsService.hasExpired.and.returnValue(false);
49
+ utilsService.expires.and.returnValue(0);
50
+ encryptionTestService.isEncrypted.and.returnValue(false);
51
+ encryptionService.encrypt.and.returnValue('encrypted');
52
+ encryptionService.decrypt.and.returnValue('{}');
53
+
54
+ // Initialize the store with empty state
55
+ service.setState({
56
+ localStores: [],
57
+ sessionStores: [],
58
+ settings: []
59
+ });
60
+ });
61
+
62
+ afterEach(() => {
63
+ localStorage.clear();
64
+ sessionStorage.clear();
65
+ });
66
+
67
+ it('should be created', () => {
68
+ expect(service).toBeTruthy();
69
+ });
70
+
71
+ });