http-request-manager 18.15.32 → 18.15.34

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 (301) hide show
  1. package/README.md +2 -0
  2. package/TEST_COVERAGE_SUMMARY.md +458 -0
  3. package/ng-package.json +8 -0
  4. package/package.json +5 -13
  5. package/src/docs/ADVANCED_WEBSOCKET.md +633 -0
  6. package/src/docs/ARCHITECTURE.md +633 -0
  7. package/src/docs/BATCH_REQUEST_README.md +467 -0
  8. package/src/docs/COMPLETE_API_REFERENCE.md +1037 -0
  9. package/src/docs/DATABASE_README.md +1195 -0
  10. package/src/docs/ENCRYPTION_README.md +403 -0
  11. package/src/docs/HTTP_MANAGER_README.md +628 -0
  12. package/src/docs/HTTP_SINGNALS_MANAGER_README.md +654 -0
  13. package/src/docs/HTTP_STATE_MANAGER_README.md +1391 -0
  14. package/src/docs/INTERCEPTOR_README.md +549 -0
  15. package/src/docs/LOCAL_STORAGE_README.md +1056 -0
  16. package/src/docs/LOCAL_STORAGE_SIGNALS_README.md +338 -0
  17. package/src/docs/LOGGER_README.md +310 -0
  18. package/src/docs/MESSAGE_TRACKER_README.md +518 -0
  19. package/src/docs/MESSAGE_TRACKER_SIGNALS_README.md +563 -0
  20. package/src/docs/MODELS_README.md +1264 -0
  21. package/src/docs/SIGNAL_SERVICES_README.md +238 -0
  22. package/src/docs/SQL_DIXIE_README.md +574 -0
  23. package/src/docs/STORE_STATE_MANAGER_README.md +556 -0
  24. package/src/docs/STORE_STATE_SIGNALS_README.md +600 -0
  25. package/src/docs/UPLOAD_REQUEST_README.md +324 -0
  26. package/src/docs/UTILS_README.md +1604 -0
  27. package/src/docs/WEBSOCKET_MESSAGE_SERVICE.md +799 -0
  28. package/src/docs/WEBSOCKET_SIGNALS_README.md +641 -0
  29. package/src/docs/WEBSOCKET_SINGLETON_REFACTORING.md +201 -0
  30. package/src/docs/WS_MANAGER_README.md +613 -0
  31. package/src/lib/http-request-manager.module.ts +147 -0
  32. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +116 -0
  33. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  34. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +255 -0
  35. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +123 -0
  36. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +6 -0
  37. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +53 -0
  38. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +195 -0
  39. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +17 -0
  40. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +208 -0
  41. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +200 -0
  42. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +17 -0
  43. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +214 -0
  44. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.html +53 -0
  45. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.scss +60 -0
  46. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/download-file/download-file.component.ts +72 -0
  47. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-download.module.ts +28 -0
  48. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.html +10 -0
  49. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.scss +29 -0
  50. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/file-downloader.component.ts +100 -0
  51. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/models/download-labels-model.ts +22 -0
  52. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.html +8 -0
  53. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.scss +19 -0
  54. package/src/lib/http-request-services-demo/request-manager-basic-demo/file-downloader/spinner/spinner.component.ts +26 -0
  55. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app-session.model.ts +30 -0
  56. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/app.model.ts +19 -0
  57. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/get-sample.model.ts +25 -0
  58. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-ai-prompt.ts +19 -0
  59. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-details.ts +24 -0
  60. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client-info.ts +30 -0
  61. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-client.model.ts +49 -0
  62. package/src/lib/http-request-services-demo/request-manager-basic-demo/models/sample-mapper-client-info.ts +33 -0
  63. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.html +279 -0
  64. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.scss +24 -0
  65. package/src/lib/http-request-services-demo/request-manager-basic-demo/request-manager-basic-demo.component.ts +461 -0
  66. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  67. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  68. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  69. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +28 -0
  70. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +10 -0
  71. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  72. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  73. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  74. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  75. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  76. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  77. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +30 -0
  78. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +19 -0
  79. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +25 -0
  80. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +19 -0
  81. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +24 -0
  82. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +30 -0
  83. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +49 -0
  84. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +33 -0
  85. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +622 -0
  86. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +106 -0
  87. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +687 -0
  88. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +418 -0
  89. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +24 -0
  90. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +576 -0
  91. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +89 -0
  92. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +119 -0
  93. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.css +0 -0
  94. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.html +3 -0
  95. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +16 -0
  96. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.css +0 -0
  97. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.html +3 -0
  98. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +16 -0
  99. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +31 -0
  100. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +94 -0
  101. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +41 -0
  102. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +203 -0
  103. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +144 -0
  104. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +11 -0
  105. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +102 -0
  106. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +40 -0
  107. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +230 -0
  108. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +30 -0
  109. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +172 -0
  110. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +31 -0
  111. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +239 -0
  112. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +31 -0
  113. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +32 -0
  114. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.css +0 -0
  115. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.html +84 -0
  116. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +40 -0
  117. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +3 -0
  118. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/jwt-token.service.ts +62 -0
  119. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +83 -0
  120. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +147 -0
  121. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +168 -0
  122. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +53 -0
  123. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +60 -0
  124. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +72 -0
  125. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +28 -0
  126. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +10 -0
  127. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +29 -0
  128. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +100 -0
  129. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +22 -0
  130. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +8 -0
  131. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +19 -0
  132. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +26 -0
  133. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +30 -0
  134. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +19 -0
  135. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +25 -0
  136. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +19 -0
  137. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +24 -0
  138. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +30 -0
  139. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +49 -0
  140. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +33 -0
  141. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +380 -0
  142. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +24 -0
  143. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +410 -0
  144. package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +28 -0
  145. package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +49 -0
  146. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.css +0 -0
  147. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.html +23 -0
  148. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +36 -0
  149. package/src/lib/http-request-services-demo/store-state-signals-demo/store-state-signals-demo.component.ts +161 -0
  150. package/src/lib/http-request-services-demo/upload-demo/models/index.ts +1 -0
  151. package/src/lib/http-request-services-demo/upload-demo/models/upload-state.model.ts +30 -0
  152. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.html +89 -0
  153. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.scss +160 -0
  154. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.spec.ts +101 -0
  155. package/src/lib/http-request-services-demo/upload-demo/upload-demo.component.ts +136 -0
  156. package/src/lib/index.ts +3 -0
  157. package/src/lib/interceptors/credentials.interceptor.ts +16 -0
  158. package/src/lib/interceptors/index.ts +6 -0
  159. package/src/lib/interceptors/models/error-settings.model.ts +22 -0
  160. package/src/lib/interceptors/models/index.ts +2 -0
  161. package/src/lib/interceptors/proxy-debugger.interceptor.ts +46 -0
  162. package/src/lib/interceptors/request-error.interceptor.ts +65 -0
  163. package/src/lib/interceptors/request-header.interceptor.ts +56 -0
  164. package/src/lib/message-display/README.md +509 -0
  165. package/src/lib/message-display/index.ts +4 -0
  166. package/src/lib/message-display/models/action.model.ts +27 -0
  167. package/src/lib/message-display/models/communication-message.model.ts +77 -0
  168. package/src/lib/message-display/models/display-config.model.ts +35 -0
  169. package/src/lib/message-display/models/display-rule.interface.ts +28 -0
  170. package/src/lib/message-display/models/display-strategy.interface.ts +8 -0
  171. package/src/lib/message-display/models/index.ts +6 -0
  172. package/src/lib/message-display/models/slide.model.ts +24 -0
  173. package/src/lib/message-display/rules/default-display-rules.ts +35 -0
  174. package/src/lib/message-display/services/message-display-router.service.ts +63 -0
  175. package/src/lib/message-display/strategies/snackbar.strategy.ts +46 -0
  176. package/src/lib/models/batch-options.model.ts +33 -0
  177. package/src/lib/models/batch-progress.model.ts +19 -0
  178. package/src/lib/models/batch-request-state.model.ts +40 -0
  179. package/src/lib/models/batch-result.model.ts +30 -0
  180. package/src/lib/models/config-http-options.model.ts +45 -0
  181. package/src/lib/models/config-local-storage-options.model.ts +27 -0
  182. package/src/lib/models/config-options.model.ts +27 -0
  183. package/src/lib/models/config-token.model.ts +9 -0
  184. package/src/lib/models/data-type.enum.ts +5 -0
  185. package/src/lib/models/database-storage.model.ts +24 -0
  186. package/src/lib/models/index.ts +16 -0
  187. package/src/lib/models/retry-options.model.ts +22 -0
  188. package/src/lib/models/upload-validation-error.model.ts +46 -0
  189. package/src/lib/services/SQL-DixieJS service/dexie-query-executor.ts +246 -0
  190. package/src/lib/services/SQL-DixieJS service/dexie-sql.service.ts +31 -0
  191. package/src/lib/services/SQL-DixieJS service/index.ts +4 -0
  192. package/src/lib/services/SQL-DixieJS service/models/execution-plan.model.ts +52 -0
  193. package/src/lib/services/SQL-DixieJS service/models/index.ts +3 -0
  194. package/src/lib/services/SQL-DixieJS service/models/sql-errors.model.ts +13 -0
  195. package/src/lib/services/SQL-DixieJS service/models/sql-options.model.ts +3 -0
  196. package/src/lib/services/SQL-DixieJS service/query-planner.ts +284 -0
  197. package/src/lib/services/SQL-DixieJS service/schema-validator.ts +217 -0
  198. package/src/lib/services/SQL-DixieJS service/sql-parser.ts +35 -0
  199. package/src/lib/services/database-manager-service/database.manager.service.ts +384 -0
  200. package/src/lib/services/database-manager-service/db.storage.service.ts +240 -0
  201. package/src/lib/services/database-manager-service/index.ts +4 -0
  202. package/src/lib/services/database-manager-service/models/index.ts +2 -0
  203. package/src/lib/services/database-manager-service/models/table-schema.ts +33 -0
  204. package/src/lib/services/index.ts +20 -0
  205. package/src/lib/services/local-storage-manager-service/index.ts +4 -0
  206. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +71 -0
  207. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +567 -0
  208. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +67 -0
  209. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +437 -0
  210. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +30 -0
  211. package/src/lib/services/local-storage-manager-service/models/index.ts +6 -0
  212. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +35 -0
  213. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +24 -0
  214. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +32 -0
  215. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +5 -0
  216. package/src/lib/services/request-manager-services/README.md +282 -0
  217. package/src/lib/services/request-manager-services/http-manager-signals.service.ts +674 -0
  218. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +353 -0
  219. package/src/lib/services/request-manager-services/http-manager.service.ts +727 -0
  220. package/src/lib/services/request-manager-services/index.ts +8 -0
  221. package/src/lib/services/request-manager-services/request-signals.service.ts +372 -0
  222. package/src/lib/services/request-manager-services/request.service.ts +435 -0
  223. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +17 -0
  224. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +16 -0
  225. package/src/lib/services/request-manager-services/rxjs-operators/index.ts +4 -0
  226. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +35 -0
  227. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +468 -0
  228. package/src/lib/services/request-manager-state-service/http-manager-state.store.spec.ts +665 -0
  229. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +2395 -0
  230. package/src/lib/services/request-manager-state-service/index.ts +3 -0
  231. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +86 -0
  232. package/src/lib/services/request-manager-state-service/models/index.ts +14 -0
  233. package/src/lib/services/request-manager-state-service/models/operation-result.model.ts +18 -0
  234. package/src/lib/services/request-manager-state-service/models/parsing-result.model.ts +21 -0
  235. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +37 -0
  236. package/src/lib/services/request-manager-state-service/models/stream-config.model.ts +20 -0
  237. package/src/lib/services/request-manager-state-service/models/stream-event-metadata.model.ts +23 -0
  238. package/src/lib/services/request-manager-state-service/models/stream-event.model.ts +23 -0
  239. package/src/lib/services/request-manager-state-service/models/stream-output.model.ts +23 -0
  240. package/src/lib/services/request-manager-state-service/models/stream-progress.model.ts +24 -0
  241. package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +13 -0
  242. package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +42 -0
  243. package/src/lib/services/store-state-manager-service/index.ts +4 -0
  244. package/src/lib/services/store-state-manager-service/models/index.ts +3 -0
  245. package/src/lib/services/store-state-manager-service/models/state-operation-result.model.ts +30 -0
  246. package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +24 -0
  247. package/src/lib/services/store-state-manager-service/store-state-manager-signals.service.ts +169 -0
  248. package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +153 -0
  249. package/src/lib/services/utils/app.service.spec.ts +25 -0
  250. package/src/lib/services/utils/app.service.ts +21 -0
  251. package/src/lib/services/utils/encryption/README.md +79 -0
  252. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +282 -0
  253. package/src/lib/services/utils/encryption/encryption-test.service.ts +39 -0
  254. package/src/lib/services/utils/encryption/index.ts +5 -0
  255. package/src/lib/services/utils/encryption/random.ts +81 -0
  256. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +106 -0
  257. package/src/lib/services/utils/headers.service.spec.ts +80 -0
  258. package/src/lib/services/utils/headers.service.ts +18 -0
  259. package/src/lib/services/utils/index.ts +9 -0
  260. package/src/lib/services/utils/logger.service.ts +90 -0
  261. package/src/lib/services/utils/models/index.ts +4 -0
  262. package/src/lib/services/utils/models/normalized-request-options.model.ts +24 -0
  263. package/src/lib/services/utils/models/path-tracker-state.model.ts +20 -0
  264. package/src/lib/services/utils/models/query-params-tracker-options.model.ts +24 -0
  265. package/src/lib/services/utils/models/query-tracker-state.model.ts +23 -0
  266. package/src/lib/services/utils/object-merger.service.spec.ts +18 -0
  267. package/src/lib/services/utils/object-merger.service.ts +78 -0
  268. package/src/lib/services/utils/path-query.service.spec.ts +117 -0
  269. package/src/lib/services/utils/path-query.service.ts +69 -0
  270. package/src/lib/services/utils/query-params-tracker.service.ts +442 -0
  271. package/src/lib/services/utils/random-color.utils.ts +83 -0
  272. package/src/lib/services/utils/utils.service.spec.ts +165 -0
  273. package/src/lib/services/utils/utils.service.ts +192 -0
  274. package/src/lib/services/ws-manager-service/index.ts +13 -0
  275. package/src/lib/services/ws-manager-service/message-tracker-signals.service.ts +147 -0
  276. package/src/lib/services/ws-manager-service/message-tracker.service.ts +477 -0
  277. package/src/lib/services/ws-manager-service/models/channel-info.model.ts +29 -0
  278. package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +24 -0
  279. package/src/lib/services/ws-manager-service/models/channel-message.model.ts +36 -0
  280. package/src/lib/services/ws-manager-service/models/channel-type.enum.ts +6 -0
  281. package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +5 -0
  282. package/src/lib/services/ws-manager-service/models/index.ts +10 -0
  283. package/src/lib/services/ws-manager-service/models/notification-message.model.ts +29 -0
  284. package/src/lib/services/ws-manager-service/models/public-message.model.ts +18 -0
  285. package/src/lib/services/ws-manager-service/models/state-message.model.ts +18 -0
  286. package/src/lib/services/ws-manager-service/models/ws-user.model.ts +38 -0
  287. package/src/lib/services/ws-manager-service/services/index.ts +4 -0
  288. package/src/lib/services/ws-manager-service/services/websocket-message.service.ts +129 -0
  289. package/src/lib/services/ws-manager-service/services/websocket.service.ts +434 -0
  290. package/src/lib/services/ws-manager-service/websocket-service/index.ts +1 -0
  291. package/src/lib/services/ws-manager-service/websocket-service/websocket-manager.service.ts +716 -0
  292. package/src/lib/services/ws-manager-service/websocket-services-complete.spec.ts +596 -0
  293. package/src/lib/services/ws-manager-service/websocket-signals-manager.service.ts +141 -0
  294. package/src/public-api.ts +19 -0
  295. package/tsconfig.lib.json +34 -0
  296. package/tsconfig.lib.prod.json +10 -0
  297. package/tsconfig.spec.json +14 -0
  298. package/fesm2022/http-request-manager.mjs +0 -13297
  299. package/fesm2022/http-request-manager.mjs.map +0 -1
  300. package/http-request-manager-18.15.32.tgz +0 -0
  301. package/types/http-request-manager.d.ts +0 -3875
@@ -0,0 +1,437 @@
1
+ import { DestroyRef, Inject, Injectable, Optional, WritableSignal, signal, computed, effect, inject } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { interval } from 'rxjs';
4
+
5
+ import { UtilsService } from '../utils/utils.service';
6
+ import { SymmetricalEncryptionService } from '../utils/encryption/symmetrical-encryption.service';
7
+
8
+ import { StorageOption, StorageType } from './models';
9
+ import { SettingOptions } from './models/setting-options.model';
10
+ import { StorageData } from './models/storage-data.model';
11
+ import { EncryptionTestService } from '../utils/encryption/encryption-test.service';
12
+ import { AppService } from '../utils/app.service';
13
+ import { CONFIG_SETTINGS_TOKEN } from '../../models/config-token.model';
14
+ import { ConfigOptions } from '../request-manager-services';
15
+ import { ObjectMergerService } from '../utils/object-merger.service';
16
+
17
+ export interface State {
18
+ localStores: StorageData[];
19
+ sessionStores: StorageData[];
20
+ settings: StorageOption[];
21
+ }
22
+
23
+ const initialState: State = {
24
+ localStores: [],
25
+ sessionStores: [],
26
+ settings: [],
27
+ };
28
+
29
+ @Injectable({ providedIn: 'root' })
30
+ export class LocalStorageSignalsManagerService {
31
+
32
+ private state: WritableSignal<State> = signal(initialState);
33
+
34
+ storageName = 'storage';
35
+ storageSettingsName = 'global-storage';
36
+ defaultOptions = SettingOptions.adapt();
37
+
38
+ stateRetrieved = false;
39
+ encrypted = false;
40
+
41
+ destroyRef = inject(DestroyRef);
42
+
43
+ app = inject(AppService);
44
+ utils = inject(UtilsService);
45
+ objectMergerService = inject(ObjectMergerService);
46
+ encryption = inject(SymmetricalEncryptionService);
47
+ encryptionTest = inject(EncryptionTestService);
48
+
49
+ // --- SELECTORS ---
50
+
51
+ readonly stores = computed(() => this.state().settings);
52
+
53
+ readonly storeExists = (store: string) =>
54
+ computed(() => !!this.state().settings.find(item => item.name === store));
55
+
56
+ readonly store = (store: string) =>
57
+ computed(() => {
58
+ const data = this.state();
59
+ const foundStore = data.settings.find(item => item.name === store);
60
+ if (!foundStore) return null;
61
+
62
+ const options = SettingOptions.adapt(foundStore.options);
63
+ const found =
64
+ options.storage === StorageType.GLOBAL
65
+ ? data.localStores.find(item => item.id === foundStore.id)
66
+ : data.sessionStores.find(item => item.id === foundStore.id);
67
+
68
+ if (!found) {
69
+ this.deleteStore({ name: store });
70
+ return null;
71
+ }
72
+
73
+ if (!this.app?.appID) {
74
+ console.warn('No App ID found - AppId not Provided');
75
+ return null;
76
+ }
77
+
78
+ let storageData = found.data;
79
+ if (options.encrypted) {
80
+ if (this.isString(found.data) && !this.encryptionTest.isEncrypted(found.data)) {
81
+ storageData = found.data;
82
+ } else {
83
+ const decryptedData = this.encryption.decrypt(found.data, this.app.appID);
84
+ if (decryptedData !== null) {
85
+ storageData = decryptedData;
86
+ } else {
87
+ console.warn(`Failed to decrypt data for store: ${store}`);
88
+ storageData = found.data; // Use undecrypted data as fallback
89
+ }
90
+ }
91
+ }
92
+
93
+ try {
94
+ return this.isString(storageData) ? JSON.parse(storageData) : storageData;
95
+ } catch (error) {
96
+ console.warn(`Failed to parse storage data for store: ${store}`, error);
97
+ return storageData; // Return raw data if parsing fails
98
+ }
99
+ });
100
+
101
+ readonly settings = computed(() => this.state().settings);
102
+
103
+ readonly setting = (store: string) =>
104
+ computed(() => this.state().settings.find(item => item.name === store) ?? null);
105
+
106
+ constructor(@Optional() @Inject(CONFIG_SETTINGS_TOKEN) private configOptions?: ConfigOptions) {
107
+ this.storageName = configOptions?.LocalStorageOptions?.storageName || this.storageName;
108
+ this.storageSettingsName = configOptions?.LocalStorageOptions?.storageSettingsName || this.storageSettingsName;
109
+ this.defaultOptions = configOptions?.LocalStorageOptions?.options || this.defaultOptions;
110
+
111
+ this.retrieveState();
112
+ // Auto-persist when state changes
113
+ effect(() => {
114
+ if (this.stateRetrieved) {
115
+ this.persistState(this.state());
116
+ }
117
+ });
118
+
119
+ // Expiration timer every 3s
120
+ interval(3000).pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
121
+ const state = this.state();
122
+ const expired = this.expired(state);
123
+ if (expired.length > 0) {
124
+ const ids = expired.map(i => i.id);
125
+ const updated: State = {
126
+ ...state,
127
+ localStores: state.localStores.filter(i => !ids.includes(i.id)),
128
+ sessionStores: state.sessionStores.filter(i => !ids.includes(i.id)),
129
+ settings: state.settings.filter(i => !ids.includes(i.id)),
130
+ };
131
+ this.state.set(updated);
132
+ this.persistState(updated);
133
+ }
134
+ });
135
+ }
136
+
137
+ // --- STATE MUTATORS ---
138
+
139
+ setStore(store: { id: string; name: string; data: any; options: SettingOptions }) {
140
+ this.state.update(state => {
141
+ const settings = StorageOption.adapt(store);
142
+ settings.options = this.objectMergerService.mergeStorageOptions(settings.options);
143
+ store.name = this.validStoreName(store.name);
144
+
145
+ const str = this.encryptionTest.isEncrypted(store.data) ? store.data : JSON.stringify(store.data);
146
+ const dataStr =
147
+ this.isObjectOrArray(str) && store.options.encrypted
148
+ ? this.encryption.encrypt(str, this.app.appID)
149
+ : store.data;
150
+
151
+ const localData =
152
+ dataStr && settings.options?.storage === StorageType.GLOBAL
153
+ ? [{ data: dataStr, id: settings.id }]
154
+ : [];
155
+ const sessionData =
156
+ dataStr && settings.options?.storage === StorageType.SESSION
157
+ ? [{ data: dataStr, id: settings.id }]
158
+ : [];
159
+
160
+ return {
161
+ ...state,
162
+ localStores: [...state.localStores, ...localData],
163
+ sessionStores: [...state.sessionStores, ...sessionData],
164
+ settings: [...state.settings, settings],
165
+ };
166
+ });
167
+ }
168
+
169
+ createStore(store: { id?: string; name: string; data: any; options: SettingOptions }) {
170
+ this.state.update(state => {
171
+ const settings = StorageOption.adapt(store);
172
+ settings.options = this.objectMergerService.mergeStorageOptions(settings.options);
173
+
174
+ if (state.settings.some(item => item.name === store.name)) {
175
+ return state;
176
+ }
177
+
178
+ if (!this.isObjectOrArray(store.data)) {
179
+ console.warn('Data must be an Object or Array');
180
+ return state;
181
+ }
182
+
183
+ const dataStr =
184
+ store.options.encrypted ? this.encryption.encrypt(store.data, this.app.appID) : store.data;
185
+
186
+ const localData =
187
+ settings.options?.storage === StorageType.GLOBAL ? [{ data: dataStr, id: settings.id }] : [];
188
+ const sessionData =
189
+ settings.options?.storage === StorageType.SESSION ? [{ data: dataStr, id: settings.id }] : [];
190
+
191
+ return {
192
+ ...state,
193
+ localStores: [...state.localStores, ...localData],
194
+ sessionStores: [...state.sessionStores, ...sessionData],
195
+ settings: [...state.settings, settings],
196
+ };
197
+ });
198
+ }
199
+
200
+ updateStore(store: { name: string; data: any }) {
201
+ this.state.update(state => {
202
+ const settings = state.settings.find(item => item.name === store.name);
203
+ if (!settings) return state;
204
+
205
+ const dataStr =
206
+ settings.options?.encrypted
207
+ ? this.encryption.encrypt(store.data, this.app.appID)
208
+ : store.data;
209
+
210
+ const localData =
211
+ settings.options?.storage === StorageType.GLOBAL ? [{ data: dataStr, id: settings.id }] : [];
212
+ const sessionData =
213
+ settings.options?.storage === StorageType.SESSION ? [{ data: dataStr, id: settings.id }] : [];
214
+
215
+ return {
216
+ ...state,
217
+ localStores: [...state.localStores.filter(i => i.id !== settings.id), ...localData],
218
+ sessionStores: [...state.sessionStores.filter(i => i.id !== settings.id), ...sessionData],
219
+ };
220
+ });
221
+ }
222
+
223
+ deleteStore(store: { name: string }) {
224
+ this.state.update(state => {
225
+ const id = state.settings.find(item => item.name === store.name)?.id;
226
+ if (!id) return state;
227
+ return {
228
+ ...state,
229
+ localStores: state.localStores.filter(i => i.id !== id),
230
+ sessionStores: state.sessionStores.filter(i => i.id !== id),
231
+ settings: state.settings.filter(i => i.id !== id),
232
+ };
233
+ });
234
+ }
235
+
236
+ resetStore() {
237
+ const cleared: State = { localStores: [], sessionStores: [], settings: [] };
238
+ this.state.set(cleared);
239
+ this.persistState(cleared);
240
+ }
241
+
242
+ // --- HELPERS ---
243
+
244
+ private persistState(state: State) {
245
+ localStorage.setItem(this.storageName, JSON.stringify(state.localStores));
246
+ sessionStorage.setItem(this.storageName, JSON.stringify(state.sessionStores));
247
+ const settingsStr = this.encryption.encrypt(state.settings, this.app.appID);
248
+ localStorage.setItem(this.storageSettingsName, settingsStr || '');
249
+ }
250
+
251
+ private expired(state: State) {
252
+ return state.settings.filter(
253
+ s => (s.options?.expires || 0) > 0 && this.utils.hasExpired(s.options?.expires!)
254
+ );
255
+ }
256
+
257
+ retrieveState() {
258
+
259
+ const str = localStorage.getItem(this.storageSettingsName);
260
+
261
+ const localStr = localStorage.getItem(this.storageName);
262
+ const sessionStr = sessionStorage.getItem(this.storageName);
263
+
264
+ let localData: StorageData[] = [];
265
+ let sessionData: StorageData[] = [];
266
+
267
+ try {
268
+ localData = localStr ? JSON.parse(localStr) : [];
269
+ } catch (error) {
270
+ console.warn('Failed to parse local storage data:', error);
271
+ localData = [];
272
+ }
273
+
274
+ try {
275
+ sessionData = sessionStr ? JSON.parse(sessionStr) : [];
276
+ } catch (error) {
277
+ console.warn('Failed to parse session storage data:', error);
278
+ sessionData = [];
279
+ }
280
+
281
+ let settings: StorageOption[] = [];
282
+ if (str) {
283
+ const plainSettings = this.tryParseSettingsArray(str);
284
+ if (plainSettings) {
285
+ settings = plainSettings;
286
+ const migratedSettings = this.encryption.encrypt(settings, this.app.appID);
287
+ if (migratedSettings) {
288
+ localStorage.setItem(this.storageSettingsName, migratedSettings);
289
+ }
290
+ console.warn('Recovered settings from plaintext storage and migrated to encrypted format');
291
+ } else {
292
+ const decryptedStr = this.encryption.decrypt(str, this.app.appID);
293
+ if (decryptedStr) {
294
+ const decryptedSettings = this.tryParseSettingsArray(decryptedStr);
295
+ if (decryptedSettings) {
296
+ settings = decryptedSettings;
297
+ } else {
298
+ console.warn('Failed to parse decrypted settings data. Resetting corrupted settings store.');
299
+ localStorage.removeItem(this.storageSettingsName);
300
+ settings = [];
301
+ }
302
+ } else {
303
+ console.warn('Failed to decrypt settings data. Resetting corrupted settings store.');
304
+ localStorage.removeItem(this.storageSettingsName);
305
+ settings = [];
306
+ }
307
+ }
308
+ }
309
+
310
+ settings.forEach(store => {
311
+
312
+
313
+ // normalize options so we compare numbers and compute expires correctly
314
+ const options = SettingOptions.adapt(store.options);
315
+
316
+ // if persisted data included expiresIn but not numeric expires, compute it now
317
+ if ((!options.expires || options.expires === 0) && options.expiresIn) {
318
+ try {
319
+ const computed = this.utils.expires(options.expiresIn as string);
320
+ options.expires = computed || 0;
321
+ } catch {
322
+ options.expires = 0;
323
+ }
324
+ }
325
+
326
+ const expired = (options.expires || 0) > 0 && this.utils.hasExpired(options.expires || 0);
327
+
328
+ if (!expired) {
329
+
330
+ const hasStorage = this.hasGlobalStorage(options.storage, store.id || '');
331
+
332
+ if (!hasStorage) {
333
+ this.createStore({ id: store.id, name: store.name, data: [], options });
334
+ } else {
335
+ const storeData = (options.storage === StorageType.GLOBAL)
336
+ ? localData.find(item => item.id === store.id)
337
+ : sessionData.find(item => item.id === store.id);
338
+ this.setStore({ id: store.id || '', name: store.name, data: storeData?.data, options });
339
+ }
340
+
341
+ }
342
+
343
+ });
344
+
345
+ this.stateRetrieved = true;
346
+
347
+ // Ensure all stored settings have numeric expires computed and persisted
348
+ try {
349
+ const current = this.state();
350
+ let changed = false;
351
+ const normalizedSettings = current.settings.map(s => {
352
+ const opts = SettingOptions.adapt(s.options);
353
+ if ((!opts.expires || opts.expires === 0) && opts.expiresIn) {
354
+ const computed = this.utils.expires(opts.expiresIn as string) || 0;
355
+ if (computed && computed !== opts.expires) {
356
+ opts.expires = computed;
357
+ changed = true;
358
+ }
359
+ }
360
+ return { ...s, options: opts } as StorageOption;
361
+ });
362
+
363
+ if (changed) {
364
+ const updated: State = { ...current, settings: normalizedSettings };
365
+ this.state.set(updated);
366
+ this.persistState(updated);
367
+ }
368
+ } catch (e) {
369
+ // swallow normalization errors to avoid breaking init
370
+ }
371
+
372
+ }
373
+
374
+ private hasGlobalStorage(type: StorageType = StorageType.GLOBAL, id: string) {
375
+ const strData: StorageData[] = [];
376
+
377
+ if (type === StorageType.GLOBAL) {
378
+ const str = localStorage.getItem(this.storageName);
379
+ strData.push(...(str ? JSON.parse(str) : []));
380
+ } else {
381
+ const str = sessionStorage.getItem(this.storageName);
382
+ strData.push(...(str ? JSON.parse(str) : []));
383
+ }
384
+
385
+ const found = strData.find(store => store.id === id);
386
+ return !!found;
387
+ }
388
+
389
+ private isObjectOrArray(obj: any) {
390
+ try {
391
+ const parsed = typeof obj === 'object' ? obj : JSON.parse(obj);
392
+ return typeof parsed === 'object' && parsed !== null;
393
+ } catch {
394
+ return false;
395
+ }
396
+ }
397
+
398
+ private isString(obj: any) {
399
+ return Object.prototype.toString.call(obj) === '[object String]';
400
+ }
401
+
402
+ private validStoreName(str: string) {
403
+ return str.toLowerCase().replace(/\s+/g, '_').replace(/[^ -~]/g, '');
404
+ }
405
+
406
+ private tryParseSettingsArray(raw: any): StorageOption[] | null {
407
+ if (!raw) {
408
+ return null;
409
+ }
410
+
411
+ if (Array.isArray(raw)) {
412
+ return raw;
413
+ }
414
+
415
+ if (!this.isString(raw)) {
416
+ return null;
417
+ }
418
+
419
+ try {
420
+ const parsed = JSON.parse(raw);
421
+ if (Array.isArray(parsed)) {
422
+ return parsed;
423
+ }
424
+
425
+ if (this.isString(parsed)) {
426
+ const nestedParsed = JSON.parse(parsed);
427
+ if (Array.isArray(nestedParsed)) {
428
+ return nestedParsed;
429
+ }
430
+ }
431
+ } catch {
432
+ return null;
433
+ }
434
+
435
+ return null;
436
+ }
437
+ }
@@ -0,0 +1,30 @@
1
+ import { StorageOption } from "./storage-option.model"
2
+
3
+ export interface GlobalStoreOptionsInterface {
4
+ encryption?: boolean
5
+ expiresIn?: string
6
+ expires?: number
7
+ stores: StorageOption[]|null
8
+ }
9
+
10
+ export class GlobalStoreOptions implements GlobalStoreOptionsInterface {
11
+
12
+ constructor(
13
+ public encryption = false,
14
+ public expiresIn?: string,
15
+ public expires?: number,
16
+ public stores: StorageOption[]|null = [],
17
+ ) {}
18
+
19
+ static adapt(item?: any): GlobalStoreOptions {
20
+
21
+ return new GlobalStoreOptions(
22
+ (item?.encryption) ? item.encryption : false,
23
+ (item?.expiresIn) ? item.expiresIn : '',
24
+ (item?.expires) ? item.expires : 0,
25
+ (item?.stores) ? item.stores.map((item: any) => StorageOption.adapt(item)) : []
26
+ )
27
+
28
+ }
29
+
30
+ }
@@ -0,0 +1,6 @@
1
+ export * from "./global-store-options.model"
2
+ export * from "./setting-options.model";
3
+ export * from "./storage-data.model";
4
+ export * from "./storage-option.model";
5
+
6
+ export * from "./storage-type.enum";
@@ -0,0 +1,35 @@
1
+ import { StorageType } from "./storage-type.enum"
2
+
3
+ export interface SettingOptionsInterface {
4
+ storage?: StorageType
5
+ expires?: number
6
+ expiresIn?: string
7
+ encrypted?: boolean
8
+ }
9
+
10
+ export class SettingOptions implements SettingOptionsInterface {
11
+
12
+ constructor(
13
+ public storage?: StorageType,
14
+ public expires?: number,
15
+ public expiresIn?: string,
16
+ public encrypted?: boolean,
17
+ ) {}
18
+
19
+ static adapt(item?: any): SettingOptions {
20
+
21
+ const storage = (typeof item?.storage !== 'undefined' && item?.storage !== null) ? Number(item.storage) : StorageType.GLOBAL;
22
+ const expires = (typeof item?.expires !== 'undefined' && item?.expires !== null) ? Number(item.expires) : 0;
23
+ const expiresIn = (typeof item?.expiresIn !== 'undefined' && item?.expiresIn !== null) ? item.expiresIn : '';
24
+ const encrypted = (typeof item?.encrypted !== 'undefined' && item?.encrypted !== null) ? Boolean(item.encrypted) : false;
25
+
26
+ return new SettingOptions(
27
+ storage,
28
+ expires,
29
+ expiresIn,
30
+ encrypted,
31
+ )
32
+
33
+ }
34
+
35
+ }
@@ -0,0 +1,24 @@
1
+ export interface StorageDataInterface {
2
+ id?: string
3
+ data?: any
4
+ }
5
+
6
+ export class StorageData implements StorageDataInterface {
7
+
8
+ constructor(
9
+ public id?: string,
10
+ public data?: any,
11
+ ) {}
12
+
13
+ static adapt(item?: any): StorageData {
14
+
15
+ return new StorageData(
16
+ (item?.id) ? item.id : crypto.randomUUID(),
17
+ (item?.data) ? item.data : null
18
+ )
19
+
20
+ }
21
+
22
+ }
23
+
24
+
@@ -0,0 +1,32 @@
1
+ import { SettingOptions } from "./setting-options.model"
2
+
3
+ export interface StorageOptionInterface {
4
+ id?: string
5
+ name: string
6
+ data?: any
7
+ options?: SettingOptions
8
+ }
9
+
10
+ export class StorageOption implements StorageOptionInterface {
11
+
12
+ constructor(
13
+ public id?: string,
14
+ public name: string = 'untitled',
15
+ public data?: any,
16
+ public options?: SettingOptions,
17
+ ) {}
18
+
19
+ static adapt(item?: any): StorageOption {
20
+
21
+ return new StorageOption(
22
+ (item?.id) ? item.id : crypto.randomUUID(),
23
+ (item?.name) ? item.name.toLowerCase() : 'untitled',
24
+ item?.data,
25
+ (item?.options) ? SettingOptions.adapt(item.options) : SettingOptions.adapt(),
26
+ )
27
+
28
+ }
29
+
30
+ }
31
+
32
+
@@ -0,0 +1,5 @@
1
+ export enum StorageType {
2
+ GLOBAL,
3
+ SESSION,
4
+ DB
5
+ }