http-request-manager 18.7.21 → 18.7.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/fesm2022/http-request-manager.mjs +7633 -0
  2. package/fesm2022/http-request-manager.mjs.map +1 -0
  3. package/http-request-manager-18.7.24.tgz +0 -0
  4. package/package.json +16 -5
  5. package/types/http-request-manager.d.ts +2277 -0
  6. package/ARCHITECTURE.md +0 -483
  7. package/DATABASE_README.md +0 -1176
  8. package/HTTP_MANAGER_README.md +0 -579
  9. package/HTTP_SINGNALS_MANAGER_README.md +0 -654
  10. package/HTTP_STATE_MANAGER_README.md +0 -948
  11. package/INTERCEPTOR_README.md +0 -549
  12. package/LOCAL_STORAGE_README.md +0 -1056
  13. package/STORE_STATE_MANAGER_README.md +0 -1322
  14. package/UTILS_README.md +0 -1186
  15. package/WS_MANAGER_README.md +0 -613
  16. package/ng-package.json +0 -8
  17. package/src/lib/http-request-manager.module.ts +0 -132
  18. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.html +0 -65
  19. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.scss +0 -0
  20. package/src/lib/http-request-services-demo/database-data-demo/database-data-demo.component.ts +0 -224
  21. package/src/lib/http-request-services-demo/http-request-services-demo.component.html +0 -114
  22. package/src/lib/http-request-services-demo/http-request-services-demo.component.scss +0 -6
  23. package/src/lib/http-request-services-demo/http-request-services-demo.component.ts +0 -52
  24. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.html +0 -195
  25. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.scss +0 -17
  26. package/src/lib/http-request-services-demo/local-storage-demo/local-storage-demo.component.ts +0 -206
  27. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.html +0 -200
  28. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.scss +0 -17
  29. package/src/lib/http-request-services-demo/local-storage-signals-demo/local-storage-signals-demo.component.ts +0 -212
  30. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.html +0 -53
  31. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
  32. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/download-file/download-file.component.ts +0 -72
  33. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-download.module.ts +0 -28
  34. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.html +0 -10
  35. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.scss +0 -29
  36. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/file-downloader.component.ts +0 -100
  37. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
  38. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
  39. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
  40. package/src/lib/http-request-services-demo/request-manager-demo/file-downloader/spinner/spinner.component.ts +0 -26
  41. package/src/lib/http-request-services-demo/request-manager-demo/models/app-session.model.ts +0 -30
  42. package/src/lib/http-request-services-demo/request-manager-demo/models/app.model.ts +0 -19
  43. package/src/lib/http-request-services-demo/request-manager-demo/models/get-sample.model.ts +0 -25
  44. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-ai-prompt.ts +0 -19
  45. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-details.ts +0 -24
  46. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client-info.ts +0 -30
  47. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-client.model.ts +0 -49
  48. package/src/lib/http-request-services-demo/request-manager-demo/models/sample-mapper-client-info.ts +0 -33
  49. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.html +0 -392
  50. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.scss +0 -24
  51. package/src/lib/http-request-services-demo/request-manager-demo/request-manager-demo.component.ts +0 -461
  52. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.html +0 -393
  53. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.scss +0 -24
  54. package/src/lib/http-request-services-demo/request-manager-state-demo/request-manager-state-demo.component.ts +0 -421
  55. package/src/lib/http-request-services-demo/request-manager-state-demo/services/state-manager-demo.service.ts +0 -87
  56. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/services/state-data-request.service.ts +0 -120
  57. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.css +0 -0
  58. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.html +0 -3
  59. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-ai-messaging/ws-ai-messaging.component.ts +0 -16
  60. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.css +0 -0
  61. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.html +0 -3
  62. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-chats/ws-chats.component.ts +0 -16
  63. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.css +0 -31
  64. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.html +0 -72
  65. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.scss +0 -41
  66. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.spec.ts +0 -205
  67. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-data-control/ws-data-control.component.ts +0 -77
  68. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.css +0 -11
  69. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.html +0 -96
  70. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.spec.ts +0 -31
  71. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-messaging/ws-messaging.component.ts +0 -229
  72. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.css +0 -30
  73. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.html +0 -172
  74. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.spec.ts +0 -31
  75. package/src/lib/http-request-services-demo/request-manager-ws-demo/components/ws-notifications/ws-notifications.component.ts +0 -239
  76. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/oidc-client.model.ts +0 -31
  77. package/src/lib/http-request-services-demo/request-manager-ws-demo/models/user-data.model.ts +0 -32
  78. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.css +0 -0
  79. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.html +0 -84
  80. package/src/lib/http-request-services-demo/request-manager-ws-demo/request-manager-ws-demo.component.ts +0 -41
  81. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/index.ts +0 -3
  82. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/message-service-demo.service.ts +0 -83
  83. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/notification-service-demo.service.ts +0 -147
  84. package/src/lib/http-request-services-demo/request-manager-ws-demo/services/state-service-demo.service.ts +0 -158
  85. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.html +0 -53
  86. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.scss +0 -60
  87. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/download-file/download-file.component.ts +0 -72
  88. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-download.module.ts +0 -28
  89. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.html +0 -10
  90. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.scss +0 -29
  91. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/file-downloader.component.ts +0 -100
  92. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/models/download-labels-model.ts +0 -22
  93. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.html +0 -8
  94. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.scss +0 -19
  95. package/src/lib/http-request-services-demo/request-signals-manager-demo/file-downloader/spinner/spinner.component.ts +0 -26
  96. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app-session.model.ts +0 -30
  97. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/app.model.ts +0 -19
  98. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/get-sample.model.ts +0 -25
  99. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-ai-prompt.ts +0 -19
  100. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-details.ts +0 -24
  101. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client-info.ts +0 -30
  102. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-client.model.ts +0 -49
  103. package/src/lib/http-request-services-demo/request-signals-manager-demo/models/sample-mapper-client-info.ts +0 -33
  104. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.html +0 -380
  105. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.scss +0 -24
  106. package/src/lib/http-request-services-demo/request-signals-manager-demo/request-signals-manager-demo.component.ts +0 -410
  107. package/src/lib/http-request-services-demo/store-state-manager-demo/models/settings.model.ts +0 -28
  108. package/src/lib/http-request-services-demo/store-state-manager-demo/services/settings-state.service.ts +0 -48
  109. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.css +0 -0
  110. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.html +0 -23
  111. package/src/lib/http-request-services-demo/store-state-manager-demo/store-state-manager-demo.component.ts +0 -36
  112. package/src/lib/index.ts +0 -3
  113. package/src/lib/interceptors/credentials.interceptor.ts +0 -16
  114. package/src/lib/interceptors/index.ts +0 -6
  115. package/src/lib/interceptors/models/error-settings.model.ts +0 -22
  116. package/src/lib/interceptors/models/index.ts +0 -2
  117. package/src/lib/interceptors/proxy-debugger.interceptor.ts +0 -46
  118. package/src/lib/interceptors/request-error.interceptor.ts +0 -65
  119. package/src/lib/interceptors/request-header.interceptor.ts +0 -53
  120. package/src/lib/models/config-http-options.model.ts +0 -42
  121. package/src/lib/models/config-local-storage-options.model.ts +0 -27
  122. package/src/lib/models/config-options.model.ts +0 -27
  123. package/src/lib/models/config-token.model.ts +0 -9
  124. package/src/lib/models/data-type.enum.ts +0 -5
  125. package/src/lib/models/database-storage.model.ts +0 -24
  126. package/src/lib/models/index.ts +0 -12
  127. package/src/lib/models/retry-options.model.ts +0 -22
  128. package/src/lib/services/database-manager-service/database.manager.service.ts +0 -262
  129. package/src/lib/services/database-manager-service/db.storage.service.ts +0 -207
  130. package/src/lib/services/database-manager-service/index.ts +0 -4
  131. package/src/lib/services/database-manager-service/models/index.ts +0 -2
  132. package/src/lib/services/database-manager-service/models/table-schema.ts +0 -33
  133. package/src/lib/services/index.ts +0 -12
  134. package/src/lib/services/local-storage-manager-service/index.ts +0 -4
  135. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.spec.ts +0 -71
  136. package/src/lib/services/local-storage-manager-service/local-storage-manager.service.ts +0 -426
  137. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.spec.ts +0 -67
  138. package/src/lib/services/local-storage-manager-service/local-storage-signals-manager.service.ts +0 -345
  139. package/src/lib/services/local-storage-manager-service/models/global-store-options.model.ts +0 -30
  140. package/src/lib/services/local-storage-manager-service/models/index.ts +0 -6
  141. package/src/lib/services/local-storage-manager-service/models/setting-options.model.ts +0 -35
  142. package/src/lib/services/local-storage-manager-service/models/storage-data.model.ts +0 -24
  143. package/src/lib/services/local-storage-manager-service/models/storage-option.model.ts +0 -32
  144. package/src/lib/services/local-storage-manager-service/models/storage-type.enum.ts +0 -5
  145. package/src/lib/services/request-manager-services/README.md +0 -268
  146. package/src/lib/services/request-manager-services/http-manager-signals.service.ts +0 -246
  147. package/src/lib/services/request-manager-services/http-manager.service.spec.ts +0 -232
  148. package/src/lib/services/request-manager-services/http-manager.service.ts +0 -274
  149. package/src/lib/services/request-manager-services/index.ts +0 -8
  150. package/src/lib/services/request-manager-services/request-signals.service.ts +0 -214
  151. package/src/lib/services/request-manager-services/request.service.ts +0 -309
  152. package/src/lib/services/request-manager-services/rxjs-operators/countdown.ts +0 -17
  153. package/src/lib/services/request-manager-services/rxjs-operators/delay-retry.ts +0 -16
  154. package/src/lib/services/request-manager-services/rxjs-operators/index.ts +0 -4
  155. package/src/lib/services/request-manager-services/rxjs-operators/request-polling.ts +0 -35
  156. package/src/lib/services/request-manager-services/rxjs-operators/request-streaming.ts +0 -436
  157. package/src/lib/services/request-manager-state-service/http-manager-state.store.ts +0 -1321
  158. package/src/lib/services/request-manager-state-service/index.ts +0 -3
  159. package/src/lib/services/request-manager-state-service/models/api-request.model.ts +0 -61
  160. package/src/lib/services/request-manager-state-service/models/index.ts +0 -6
  161. package/src/lib/services/request-manager-state-service/models/request-options.model.ts +0 -22
  162. package/src/lib/services/request-manager-state-service/models/stream-type.enum.ts +0 -13
  163. package/src/lib/services/request-manager-state-service/models/ws-options.model.ts +0 -39
  164. package/src/lib/services/store-state-manager-service/index.ts +0 -3
  165. package/src/lib/services/store-state-manager-service/models/index.ts +0 -2
  166. package/src/lib/services/store-state-manager-service/models/state-storage-options.model.ts +0 -24
  167. package/src/lib/services/store-state-manager-service/store-state-manager.service.ts +0 -88
  168. package/src/lib/services/utils/app.service.spec.ts +0 -25
  169. package/src/lib/services/utils/app.service.ts +0 -21
  170. package/src/lib/services/utils/encryption/README.md +0 -79
  171. package/src/lib/services/utils/encryption/asymmetrical-encryption.service.ts +0 -282
  172. package/src/lib/services/utils/encryption/encryption-test.service.ts +0 -39
  173. package/src/lib/services/utils/encryption/index.ts +0 -5
  174. package/src/lib/services/utils/encryption/random.ts +0 -81
  175. package/src/lib/services/utils/encryption/symmetrical-encryption.service.ts +0 -93
  176. package/src/lib/services/utils/headers.service.spec.ts +0 -80
  177. package/src/lib/services/utils/headers.service.ts +0 -18
  178. package/src/lib/services/utils/index.ts +0 -7
  179. package/src/lib/services/utils/object-merger.service.spec.ts +0 -18
  180. package/src/lib/services/utils/object-merger.service.ts +0 -78
  181. package/src/lib/services/utils/path-query.service.spec.ts +0 -117
  182. package/src/lib/services/utils/path-query.service.ts +0 -69
  183. package/src/lib/services/utils/random-color.utils.ts +0 -83
  184. package/src/lib/services/utils/utils.service.spec.ts +0 -165
  185. package/src/lib/services/utils/utils.service.ts +0 -192
  186. package/src/lib/services/ws-manager-service/index.ts +0 -4
  187. package/src/lib/services/ws-manager-service/models/channel-info.model.ts +0 -24
  188. package/src/lib/services/ws-manager-service/models/channel-message-data.model.ts +0 -24
  189. package/src/lib/services/ws-manager-service/models/channel-message.model.ts +0 -24
  190. package/src/lib/services/ws-manager-service/models/communication-type.enum.ts +0 -5
  191. package/src/lib/services/ws-manager-service/models/index.ts +0 -5
  192. package/src/lib/services/ws-manager-service/models/ws-user.model.ts +0 -38
  193. package/src/lib/services/ws-manager-service/services/index.ts +0 -3
  194. package/src/lib/services/ws-manager-service/services/websocket.service.ts +0 -392
  195. package/src/public-api.ts +0 -14
  196. package/tsconfig.lib.json +0 -32
  197. package/tsconfig.lib.prod.json +0 -10
  198. package/tsconfig.spec.json +0 -14
@@ -1,195 +0,0 @@
1
- <div style="margin: 2rem;">
2
-
3
- <div style="display: flex; gap: 1rem">
4
- <h2 style="padding-top: .5rem; display: flex;">
5
- <div style="padding-top: .5rem;">Local Storage Manager</div>
6
- <div>
7
- <button mat-icon-button [matMenuTriggerFor]="menu">
8
- <mat-icon>info</mat-icon>
9
- </button>
10
- </div>
11
- </h2>
12
- <span style="flex:1"></span>
13
- <div style="padding-top: .25rem;">
14
- <mat-button-toggle-group name="storage" [formControl]="typeControl" (change)="onCancel()">
15
- <mat-button-toggle value="0">Local Storage</mat-button-toggle>
16
- <mat-button-toggle value="1">Session Storage</mat-button-toggle>
17
- </mat-button-toggle-group>
18
- </div>
19
- <div style="margin-top: .25rem;">
20
- <button mat-icon-button (click)="onCreate()">
21
- <mat-icon>add</mat-icon>
22
- </button>
23
- </div>
24
- </div>
25
-
26
- <ng-container *ngIf="storeProps?.storageName || storeProps?.storageSettingsName">
27
- <div style="display: flex; gap: .5rem; flex-direction: column; border: gray solid thin; background-color: whitesmoke; padding: 1rem;"
28
- >
29
- <div style="display: flex;">
30
- <div *ngIf="storeProps?.storageSettingsName" style="flex:1">
31
- Database: <b>{{ storeProps?.storageSettingsName }}</b>
32
- </div>
33
- <div *ngIf="storeProps?.storageName" style="flex:1">
34
- Data: <b>{{ storeProps?.storageName }}</b>
35
- </div>
36
- </div>
37
- </div>
38
- </ng-container>
39
-
40
- <div style="margin-top: 2rem;" [formGroup]="newStoreForm" *ngIf="create; else LIST">
41
-
42
- <h2>Create Store</h2>
43
-
44
- <div style="display: flex; gap: 1rem;">
45
- <div style="flex:1">
46
- <mat-form-field appearance="outline">
47
- <mat-label>Store Name</mat-label>
48
- <input matInput placeholder="sample" formControlName="name">
49
- </mat-form-field>
50
- </div>
51
- <div>
52
- <mat-form-field appearance="outline">
53
- <mat-label>Expires In...</mat-label>
54
- <mat-select formControlName="expiresIn">
55
- <mat-option value="0">None</mat-option>
56
- <mat-option value="30s">30 Seconds</mat-option>
57
- <mat-option value="1mn">1 Minute</mat-option>
58
- <mat-option value="1hr">1 Hour</mat-option>
59
- <mat-option value="1d">1 Day</mat-option>
60
- </mat-select>
61
- </mat-form-field>
62
- </div>
63
- <div style="margin-top: 1rem;">
64
- <mat-slide-toggle formControlName="encrypted">Encrypted</mat-slide-toggle>
65
- </div>
66
- </div>
67
-
68
- <div style="display: flex;">
69
- <mat-form-field appearance="outline" style="flex: 1;">
70
- <mat-label>Data (Must be an Object or Array of any)</mat-label>
71
- <textarea matInput placeholder="[]" formControlName="data" #json></textarea>
72
- </mat-form-field>
73
- </div>
74
- <mat-error *ngIf="!isValidJSON(json.value)">Not Valid Data</mat-error>
75
-
76
- <div style="display: flex;">
77
- <span style="flex:1"></span>
78
- <button mat-stroked-button (click)="onCreateStore()" [disabled]="!(isValid && isValidJSON(json.value))">
79
- Save Store
80
- </button>
81
- </div>
82
-
83
- </div>
84
-
85
- <ng-template #LIST>
86
-
87
- <div style="margin-top: 1rem;">
88
- <mat-divider></mat-divider>
89
- </div>
90
- {{ settings$ | async | json }}
91
- <div *ngIf="filterData(settings$ | async) as data">
92
- <ng-container *ngIf="data.length > 0; else NO_DATA">
93
- <table mat-table [dataSource]="data">
94
- <ng-container matColumnDef="name">
95
- <th mat-header-cell *matHeaderCellDef> Store </th>
96
- <td mat-cell *matCellDef="let element" style="font-weight: bold; text-transform: uppercase;"> {{element.name}} </td>
97
- </ng-container>
98
-
99
- <ng-container matColumnDef="id">
100
- <th mat-header-cell *matHeaderCellDef> ID </th>
101
- <td mat-cell *matCellDef="let element"> {{element.id}} </td>
102
- </ng-container>
103
-
104
- <ng-container matColumnDef="encrypted">
105
- <th mat-header-cell *matHeaderCellDef style="text-align: center;"> Encrypted </th>
106
- <td mat-cell *matCellDef="let element" style="text-align: center;">
107
- <ng-container *ngIf="element.options.encrypted; else NO">YES</ng-container>
108
- <ng-template #NO><span style="color:gray">NO</span></ng-template>
109
- </td>
110
- </ng-container>
111
-
112
- <ng-container matColumnDef="expires">
113
- <th mat-header-cell *matHeaderCellDef style="text-align: center;"> Expires </th>
114
- <td mat-cell *matCellDef="let element" style="text-align: center;">
115
- <ng-container *ngIf="element.options.expires !== 0; else NO_DATA">
116
- {{expiresIn(element.options.expires)}}
117
- </ng-container>
118
- <ng-template #NO_DATA>
119
-
120
- </ng-template>
121
- </td>
122
- </ng-container>
123
-
124
- <ng-container matColumnDef="option">
125
- <th mat-header-cell *matHeaderCellDef></th>
126
- <td mat-cell *matCellDef="let element" style="padding-right: 0;">
127
- <div style="display: flex;justify-content: flex-end;">
128
- <button mat-icon-button color="warn" (click)="onDelete(element); $event.stopPropagation()">
129
- <mat-icon>close</mat-icon>
130
- </button>
131
- </div>
132
- </td>
133
- </ng-container>
134
-
135
- <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
136
- <tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="onSelectedRow(row)"></tr>
137
- </table>
138
- </ng-container>
139
-
140
- <ng-template #NO_DATA>
141
- <h3 style="margin-top: 1rem;">No Data</h3>
142
- </ng-template>
143
-
144
- <div *ngIf="(data$ | async) as data" style="margin-top: 2rem;">
145
- <div style="margin-bottom: 1rem;">
146
- <mat-divider></mat-divider>
147
- </div>
148
-
149
- <h3>STORE: <span style="font-weight: bold;">{{ store.name | uppercase }}</span></h3>
150
- <h3>SETTINGS: {{ setting$(store.name) | async | json }}</h3>
151
- <div style="display: flex;">
152
- <mat-form-field appearance="outline" style="flex: 1;">
153
- <mat-label>Data (Must be an Object or Array of any)</mat-label>
154
- <textarea matInput placeholder="[]" #json [value]="data"></textarea>
155
- </mat-form-field>
156
- </div>
157
- <mat-error *ngIf="!isValidJSON(json.value)">Not Valid Data</mat-error>
158
-
159
- <div style="display: flex; gap: .5rem;">
160
- <span style="flex:1"></span>
161
- <button mat-stroked-button (click)="onCancel()">Cancel</button>
162
- <button mat-stroked-button (click)="onUpdate(store, json.value)" [disabled]="!(isValidJSON(json.value))">Update</button>
163
- </div>
164
- </div>
165
- </div>
166
-
167
- </ng-template>
168
-
169
- <div style="margin-top: 1rem;">
170
- <mat-divider></mat-divider>
171
- </div>
172
-
173
- <div style="margin-top: 1rem;">
174
- <button mat-stroked-button (click)="onReset()">Delete All Stores</button>
175
- </div>
176
-
177
- </div>
178
-
179
-
180
- <mat-menu #menu="matMenu">
181
- <div style="padding: 1rem;">
182
- <p>Please note that the LocalStorage (encryption) and management of data is dependant on initializing the APP_ID</p>
183
- <p>Must provide a value for <b>APP_ID</b> in AppModule->Providers</p>
184
- <mat-divider></mat-divider>
185
- <div style="font-size: smaller; margin-top: .5rem;">
186
- <p>Example: UUID (self.crypto.randomUUID() to generate)</p>
187
- <div style="background-color: whitesmoke; padding: 1rem;">
188
- &#123;<br>
189
- provide: APP_ID,<br>
190
- useValue: "056991ac-3537-43ab-b5b9-83edf6554eff",<br>
191
- &#125;
192
- </div>
193
- </div>
194
- </div>
195
- </mat-menu>
@@ -1,17 +0,0 @@
1
- .mat-mdc-row .mat-mdc-cell {
2
- border-bottom: 1px solid transparent;
3
- border-top: 1px solid transparent;
4
- cursor: pointer;
5
- }
6
-
7
- .mat-mdc-row:hover .mat-mdc-cell {
8
- border-color: currentColor;
9
- }
10
-
11
- .demo-row-is-clicked {
12
- font-weight: bold;
13
- }
14
-
15
- .mat-mdc-menu-panel.mat-mdc-menu-panel {
16
- max-width: 280px !important;
17
- }
@@ -1,206 +0,0 @@
1
- import { Component, Inject, inject, OnInit, ViewEncapsulation } from '@angular/core';
2
- import { LocalStorageManagerService, SettingOptions, StorageOption, StorageType } from '../../services/local-storage-manager-service';
3
- import { FormBuilder, Validators } from '@angular/forms';
4
- import { BehaviorSubject, EMPTY, Observable, of } from 'rxjs';
5
- import { ConfigOptions, LocalStorageOptions, UtilsService } from '../../services';
6
- import { switchMap, tap, map } from 'rxjs/operators';
7
- import { CONFIG_SETTINGS_TOKEN } from '../../models/config-token.model';
8
-
9
- @Component({
10
- selector: 'app-local-storage-demo',
11
- templateUrl: './local-storage-demo.component.html',
12
- styleUrls: ['./local-storage-demo.component.scss'],
13
- encapsulation: ViewEncapsulation.None,
14
- standalone: false
15
- })
16
- export class LocalStorageDemoComponent implements OnInit {
17
-
18
- fb = inject(FormBuilder)
19
- utils = inject(UtilsService)
20
-
21
- type$ = new BehaviorSubject(StorageType.GLOBAL)
22
- get type() {
23
- return (this.typeControl.value) ? +this.typeControl.value : 0
24
- }
25
-
26
- typeControl = this.fb.control(StorageType.GLOBAL.toString())
27
-
28
- localStorageManagerService = inject(LocalStorageManagerService)
29
-
30
- settings$: Observable<any> = this.localStorageManagerService.settings$
31
-
32
- setting$ = (store: string) => this.localStorageManagerService.setting$(store)
33
-
34
- storageForm = this.fb.group({
35
- store: this.fb.control<string|null>(null),
36
- type: 'local',
37
- settingType: 'local',
38
- encrypted: false,
39
- data: this.fb.control<string>('', Validators.required),
40
- })
41
-
42
- newStoreForm = this.fb.group({
43
- name: this.fb.control<string|null>(null, Validators.required),
44
- storage: 'local',
45
- encrypted: false,
46
- data: this.fb.control<string>('', Validators.required),
47
- expiresIn: this.fb.control('0')
48
- })
49
-
50
- store$?: Observable<any>
51
-
52
- storeData$ = this.storageForm.get('store')?.valueChanges
53
- .pipe(
54
- switchMap((data: any) => {
55
- return data
56
- ? this.localStorageManagerService.store$(data.name)
57
- : of('')
58
- }),
59
- tap(data => {
60
- this.storageForm.get('data')?.patchValue(data, { emitEvent: false })
61
- })
62
- )
63
-
64
- expiresIn = (epoch: number) => this.utils.expiresIn(epoch)
65
-
66
- get isValid() {
67
- return this.newStoreForm.valid
68
- }
69
-
70
- get isValidData() {
71
- return this.storageForm.valid
72
- }
73
-
74
- isValidJSON = (str: string) => {
75
- try {
76
- JSON.parse(str)
77
- return true
78
- } catch (e) {
79
- return false
80
- }
81
- }
82
-
83
- displayedColumns: string[] = ['name', 'id', 'encrypted', 'expires', "option"];
84
-
85
- filterData = (values: SettingOptions[]) => {
86
- if(!values) return []
87
- return values.filter((item: any) => item.options.storage === +this.type)
88
- }
89
-
90
- data$?: Observable<any>
91
-
92
- store: any
93
-
94
- create = false
95
-
96
- storeProps?: LocalStorageOptions
97
- options?: SettingOptions
98
-
99
- constructor(@Inject(CONFIG_SETTINGS_TOKEN) private configOptions?: ConfigOptions) { }
100
-
101
- ngOnInit() {
102
-
103
- this.storeProps = this.configOptions?.LocalStorageOptions
104
- this.options = this.storeProps?.options
105
-
106
- if(this.options?.storage) {
107
- this.typeControl.patchValue(this.options.storage.toString())
108
- this.typeControl.disable()
109
- } else {
110
- this.typeControl.enable()
111
- }
112
-
113
- if(this.options?.expiresIn) {
114
- this.newStoreForm.get('expiresIn')?.patchValue(this.options.expiresIn)
115
- this.newStoreForm.get('expiresIn')?.disable()
116
- } else {
117
- this.newStoreForm.get('expiresIn')?.enable()
118
- }
119
-
120
- if(this.options?.encrypted) {
121
- this.newStoreForm.get('encrypted')?.patchValue(this.options.encrypted)
122
- this.newStoreForm.get('encrypted')?.disable()
123
- } else {
124
- this.newStoreForm.get('encrypted')?.enable()
125
- }
126
-
127
- }
128
-
129
- onCreateStore() {
130
-
131
- if(!this.isValid) return
132
-
133
- const store = this.newStoreForm.value
134
- if(!store.name || store.name === '') return
135
-
136
- const options = { storage: this.type, encrypted: store.encrypted, expiresIn: store.expiresIn }
137
-
138
- this.localStorageManagerService.createStore({
139
- name: store.name,
140
- data: store.data,
141
- options: SettingOptions.adapt(options)
142
- })
143
-
144
- this.newStoreForm.reset()
145
- this.create = false
146
- }
147
-
148
- onUpdateStore(store: any) {
149
-
150
- if(!this.storageForm.valid) return
151
-
152
- const storeData = this.storageForm.value
153
-
154
- const data = JSON.parse(storeData.data || '')
155
-
156
- const type = (storeData.type === 'local') ? StorageType.GLOBAL : StorageType.SESSION
157
-
158
- this.localStorageManagerService.updateStore({
159
- name: store.name,
160
- data
161
- })
162
-
163
- }
164
-
165
- onSelectedRow(store: any) {
166
- this.store = store
167
- this.data$ = this.localStorageManagerService.store$(store.name).pipe(map(item => JSON.stringify(item)))
168
- this.create = false
169
- }
170
-
171
- onCreate() {
172
- this.onCancel()
173
- this.create = true
174
- }
175
-
176
- onDelete(store: StorageOption) {
177
-
178
- this.localStorageManagerService.deleteStore({
179
- name: store.name,
180
- })
181
-
182
- this.onCancel()
183
- }
184
-
185
- onCancel() {
186
- this.data$ = EMPTY
187
- this.store = null
188
- this.create = false
189
- }
190
-
191
- onUpdate(store: StorageOption, data: any) {
192
-
193
- this.localStorageManagerService.updateStore({
194
- name: store.name,
195
- data: JSON.parse(data)
196
- })
197
-
198
- this.onCancel()
199
-
200
- }
201
-
202
- onReset() {
203
- this.localStorageManagerService.resetStore()
204
- }
205
-
206
- }
@@ -1,200 +0,0 @@
1
- <div style="margin: 2rem;">
2
-
3
- <div style="display: flex; gap: 1rem">
4
- <h2 style="padding-top: .5rem; display: flex;">
5
- <div style="padding-top: .5rem;">
6
- <span>Local Storage Manager</span>
7
- <span style="margin-left: .5rem;">
8
- <mat-icon color="accent">fiber_new</mat-icon>
9
- </span>
10
- </div>
11
- <div>
12
- <button mat-icon-button [matMenuTriggerFor]="menu">
13
- <mat-icon>info</mat-icon>
14
- </button>
15
- </div>
16
- </h2>
17
- <span style="flex:1"></span>
18
- <div style="padding-top: .25rem;">
19
- <mat-button-toggle-group name="storage" [formControl]="typeControl" (change)="onCancel()">
20
- <mat-button-toggle value="0">Local Storage</mat-button-toggle>
21
- <mat-button-toggle value="1">Session Storage</mat-button-toggle>
22
- </mat-button-toggle-group>
23
- </div>
24
- <div style="margin-top: .25rem;">
25
- <button mat-icon-button (click)="onCreate()">
26
- <mat-icon>add</mat-icon>
27
- </button>
28
- </div>
29
- </div>
30
-
31
- <ng-container *ngIf="storeProps?.storageName || storeProps?.storageSettingsName">
32
- <div style="display: flex; gap: .5rem; flex-direction: column; border: gray solid thin; background-color: whitesmoke; padding: 1rem;"
33
- >
34
- <div style="display: flex;">
35
- <div *ngIf="storeProps?.storageSettingsName" style="flex:1">
36
- Database: <b>{{ storeProps?.storageSettingsName }}</b>
37
- </div>
38
- <div *ngIf="storeProps?.storageName" style="flex:1">
39
- Data: <b>{{ storeProps?.storageName }}</b>
40
- </div>
41
- </div>
42
- </div>
43
- </ng-container>
44
-
45
- <div style="margin-top: 2rem;" [formGroup]="newStoreForm" *ngIf="create; else LIST">
46
-
47
- <h2>Create Store</h2>
48
-
49
- <div style="display: flex; gap: 1rem;">
50
- <div style="flex:1">
51
- <mat-form-field appearance="outline">
52
- <mat-label>Store Name</mat-label>
53
- <input matInput placeholder="sample" formControlName="name">
54
- </mat-form-field>
55
- </div>
56
- <div>
57
- <mat-form-field appearance="outline">
58
- <mat-label>Expires In...</mat-label>
59
- <mat-select formControlName="expiresIn">
60
- <mat-option value="0">None</mat-option>
61
- <mat-option value="30s">30 Seconds</mat-option>
62
- <mat-option value="1mn">1 Minute</mat-option>
63
- <mat-option value="1hr">1 Hour</mat-option>
64
- <mat-option value="1d">1 Day</mat-option>
65
- </mat-select>
66
- </mat-form-field>
67
- </div>
68
- <div style="margin-top: 1rem;">
69
- <mat-slide-toggle formControlName="encrypted">Encrypted</mat-slide-toggle>
70
- </div>
71
- </div>
72
-
73
- <div style="display: flex;">
74
- <mat-form-field appearance="outline" style="flex: 1;">
75
- <mat-label>Data (Must be an Object or Array of any)</mat-label>
76
- <textarea matInput placeholder="[]" formControlName="data" #json></textarea>
77
- </mat-form-field>
78
- </div>
79
- <mat-error *ngIf="!isValidJSON(json.value)">Not Valid Data</mat-error>
80
-
81
- <div style="display: flex;">
82
- <span style="flex:1"></span>
83
- <button mat-stroked-button (click)="onCreateStore()" [disabled]="!(isValid && isValidJSON(json.value))">
84
- Save Store
85
- </button>
86
- </div>
87
-
88
- </div>
89
-
90
- <ng-template #LIST>
91
-
92
- <div style="margin-top: 1rem;">
93
- <mat-divider></mat-divider>
94
- </div>
95
- {{ settings() | json }}
96
- <div *ngIf="filterData(settings()) as data">
97
- <ng-container *ngIf="data.length > 0; else NO_DATA">
98
- <table mat-table [dataSource]="data">
99
- <ng-container matColumnDef="name">
100
- <th mat-header-cell *matHeaderCellDef> Store </th>
101
- <td mat-cell *matCellDef="let element" style="font-weight: bold; text-transform: uppercase;"> {{element.name}} </td>
102
- </ng-container>
103
-
104
- <ng-container matColumnDef="id">
105
- <th mat-header-cell *matHeaderCellDef> ID </th>
106
- <td mat-cell *matCellDef="let element"> {{element.id}} </td>
107
- </ng-container>
108
-
109
- <ng-container matColumnDef="encrypted">
110
- <th mat-header-cell *matHeaderCellDef style="text-align: center;"> Encrypted </th>
111
- <td mat-cell *matCellDef="let element" style="text-align: center;">
112
- <ng-container *ngIf="element.options.encrypted; else NO">YES</ng-container>
113
- <ng-template #NO><span style="color:gray">NO</span></ng-template>
114
- </td>
115
- </ng-container>
116
-
117
- <ng-container matColumnDef="expires">
118
- <th mat-header-cell *matHeaderCellDef style="text-align: center;"> Expires </th>
119
- <td mat-cell *matCellDef="let element" style="text-align: center;">
120
- <ng-container *ngIf="element.options.expires !== 0; else NO_DATA">
121
- {{expiresIn(element.options.expires)}}
122
- </ng-container>
123
- <ng-template #NO_DATA>
124
-
125
- </ng-template>
126
- </td>
127
- </ng-container>
128
-
129
- <ng-container matColumnDef="option">
130
- <th mat-header-cell *matHeaderCellDef></th>
131
- <td mat-cell *matCellDef="let element" style="padding-right: 0;">
132
- <div style="display: flex;justify-content: flex-end;">
133
- <button mat-icon-button color="warn" (click)="onDelete(element); $event.stopPropagation()">
134
- <mat-icon>close</mat-icon>
135
- </button>
136
- </div>
137
- </td>
138
- </ng-container>
139
-
140
- <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
141
- <tr mat-row *matRowDef="let row; columns: displayedColumns;" (click)="onSelectedRow(row)"></tr>
142
- </table>
143
- </ng-container>
144
-
145
- <ng-template #NO_DATA>
146
- <h3 style="margin-top: 1rem;">No Data</h3>
147
- </ng-template>
148
-
149
- <div *ngIf="storeSelected() as selectedStore" style="margin-top: 2rem;">
150
- <div style="margin-bottom: 1rem;">
151
- <mat-divider></mat-divider>
152
- </div>
153
-
154
- <h3>STORE: <span style="font-weight: bold;">{{ selectedStore.name | uppercase }}</span></h3>
155
- <h3>SETTINGS: {{ localStorageManagerService.setting(selectedStore.name) ? (localStorageManagerService.setting(selectedStore.name)() | json) : '{}' }}</h3>
156
- <div style="display: flex;">
157
- <mat-form-field appearance="outline" style="flex: 1;">
158
- <mat-label>Data (Must be an Object or Array of any)</mat-label>
159
- <textarea matInput placeholder="[]" #json [value]="selectedStoreData()"></textarea>
160
- </mat-form-field>
161
- </div>
162
- <mat-error *ngIf="!isValidJSON(json.value)">Not Valid Data</mat-error>
163
-
164
- <div style="display: flex; gap: .5rem;">
165
- <span style="flex:1"></span>
166
- <button mat-stroked-button (click)="onCancel()">Cancel</button>
167
- <button mat-stroked-button (click)="onUpdate(selectedStore, json.value)" [disabled]="!(isValidJSON(json.value))">Update</button>
168
- </div>
169
- </div>
170
- </div>
171
-
172
- </ng-template>
173
-
174
- <div style="margin-top: 1rem;">
175
- <mat-divider></mat-divider>
176
- </div>
177
-
178
- <div style="margin-top: 1rem;">
179
- <button mat-stroked-button (click)="onReset()">Delete All Stores</button>
180
- </div>
181
-
182
- </div>
183
-
184
-
185
- <mat-menu #menu="matMenu">
186
- <div style="padding: 1rem;">
187
- <p>Please note that the LocalStorage (encryption) and management of data is dependant on initializing the APP_ID</p>
188
- <p>Must provide a value for <b>APP_ID</b> in AppModule->Providers</p>
189
- <mat-divider></mat-divider>
190
- <div style="font-size: smaller; margin-top: .5rem;">
191
- <p>Example: UUID (self.crypto.randomUUID() to generate)</p>
192
- <div style="background-color: whitesmoke; padding: 1rem;">
193
- &#123;<br>
194
- provide: APP_ID,<br>
195
- useValue: "056991ac-3537-43ab-b5b9-83edf6554eff",<br>
196
- &#125;
197
- </div>
198
- </div>
199
- </div>
200
- </mat-menu>
@@ -1,17 +0,0 @@
1
- .mat-mdc-row .mat-mdc-cell {
2
- border-bottom: 1px solid transparent;
3
- border-top: 1px solid transparent;
4
- cursor: pointer;
5
- }
6
-
7
- .mat-mdc-row:hover .mat-mdc-cell {
8
- border-color: currentColor;
9
- }
10
-
11
- .demo-row-is-clicked {
12
- font-weight: bold;
13
- }
14
-
15
- .mat-mdc-menu-panel.mat-mdc-menu-panel {
16
- max-width: 280px !important;
17
- }