@progressive-development/pd-spa-helper 0.8.22 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/LICENSE +2 -21
  2. package/dist/auth/AuthController.d.ts +37 -0
  3. package/dist/auth/AuthController.d.ts.map +1 -0
  4. package/dist/auth/AuthController.js +65 -0
  5. package/dist/auth/auth-directives.d.ts +59 -0
  6. package/dist/auth/auth-directives.d.ts.map +1 -0
  7. package/dist/auth/auth-directives.js +81 -0
  8. package/dist/auth/auth-utils.d.ts +45 -0
  9. package/dist/auth/auth-utils.d.ts.map +1 -0
  10. package/dist/auth/auth-utils.js +42 -0
  11. package/dist/auth/index.d.ts +7 -0
  12. package/dist/auth/index.d.ts.map +1 -0
  13. package/dist/components/default-login/DefaultLogin.d.ts +15 -0
  14. package/dist/components/default-login/DefaultLogin.d.ts.map +1 -0
  15. package/dist/components/default-login/DefaultLogin.js +120 -0
  16. package/dist/components/default-not-found/DefaultNotFound.d.ts +6 -0
  17. package/dist/components/default-not-found/DefaultNotFound.d.ts.map +1 -0
  18. package/dist/{defaultpage/default-not-found.js → components/default-not-found/DefaultNotFound.js} +15 -8
  19. package/dist/components/pd-section-page/PdSectionPage.d.ts +55 -0
  20. package/dist/components/pd-section-page/PdSectionPage.d.ts.map +1 -0
  21. package/dist/components/pd-section-page/PdSectionPage.js +40 -0
  22. package/dist/components/pd-spa-helper/PdSpaHelper.d.ts +160 -0
  23. package/dist/components/pd-spa-helper/PdSpaHelper.d.ts.map +1 -0
  24. package/dist/components/pd-spa-helper/PdSpaHelper.js +651 -0
  25. package/dist/components/pd-spa-helper/controllers/ScrollController.d.ts +77 -0
  26. package/dist/components/pd-spa-helper/controllers/ScrollController.d.ts.map +1 -0
  27. package/dist/components/pd-spa-helper/controllers/ScrollController.js +102 -0
  28. package/dist/components/pd-spa-helper/spa-config.d.ts +87 -0
  29. package/dist/components/pd-spa-helper/spa-config.d.ts.map +1 -0
  30. package/dist/components/pd-spa-helper/spa-config.js +167 -0
  31. package/dist/components/pd-spa-helper/spa-events.d.ts +121 -0
  32. package/dist/components/pd-spa-helper/spa-events.d.ts.map +1 -0
  33. package/dist/components/pd-spa-helper/spa-events.js +18 -0
  34. package/dist/db/index.d.ts +3 -0
  35. package/dist/db/index.d.ts.map +1 -0
  36. package/dist/{store → db}/indexDB.d.ts +9 -9
  37. package/dist/db/indexDB.d.ts.map +1 -0
  38. package/dist/{store → db}/indexDB.js +18 -27
  39. package/dist/generated/locale-wrapper/be-wrapper.js +10 -10
  40. package/dist/generated/locale-wrapper/de-wrapper.js +10 -10
  41. package/dist/generated/locale-wrapper/en-wrapper.js +10 -10
  42. package/dist/generated/locales/be.d.ts +1 -15
  43. package/dist/generated/locales/be.d.ts.map +1 -1
  44. package/dist/generated/locales/be.js +3 -18
  45. package/dist/generated/locales/de.d.ts +1 -15
  46. package/dist/generated/locales/de.d.ts.map +1 -1
  47. package/dist/generated/locales/de.js +3 -18
  48. package/dist/generated/locales/en.d.ts +1 -15
  49. package/dist/generated/locales/en.d.ts.map +1 -1
  50. package/dist/generated/locales/en.js +3 -18
  51. package/dist/helper/logger.d.ts +11 -12
  52. package/dist/helper/logger.d.ts.map +1 -1
  53. package/dist/helper/logger.js +12 -53
  54. package/dist/helper/offline-watcher-helper.js +5 -6
  55. package/dist/helper/refresh-id-token.d.ts.map +1 -1
  56. package/dist/helper/refresh-id-token.js +10 -8
  57. package/dist/index.d.ts +31 -29
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +32 -91
  60. package/dist/model/index.d.ts +4 -0
  61. package/dist/model/index.d.ts.map +1 -0
  62. package/dist/model/spa-model.d.ts +14 -15
  63. package/dist/model/spa-model.d.ts.map +1 -1
  64. package/dist/model/spa-model.js +2 -4
  65. package/dist/router/PdRouterService.d.ts +4 -1
  66. package/dist/router/PdRouterService.d.ts.map +1 -1
  67. package/dist/router/PdRouterService.js +48 -28
  68. package/dist/router/index.d.ts +3 -0
  69. package/dist/router/index.d.ts.map +1 -0
  70. package/dist/screen-size/ScreenSizeController.d.ts +34 -0
  71. package/dist/screen-size/ScreenSizeController.d.ts.map +1 -0
  72. package/dist/screen-size/ScreenSizeController.js +58 -0
  73. package/dist/screen-size/ScreenSizeService.d.ts +49 -0
  74. package/dist/screen-size/ScreenSizeService.d.ts.map +1 -0
  75. package/dist/screen-size/ScreenSizeService.js +107 -0
  76. package/dist/screen-size/index.d.ts +13 -0
  77. package/dist/screen-size/index.d.ts.map +1 -0
  78. package/dist/screen-size/responsive-directives.d.ts +59 -0
  79. package/dist/screen-size/responsive-directives.d.ts.map +1 -0
  80. package/dist/screen-size/responsive-directives.js +71 -0
  81. package/dist/screen-size/types.d.ts +44 -0
  82. package/dist/screen-size/types.d.ts.map +1 -0
  83. package/dist/service-provider/ServiceRegistry.d.ts +67 -0
  84. package/dist/service-provider/ServiceRegistry.d.ts.map +1 -0
  85. package/dist/service-provider/ServiceRegistry.js +76 -0
  86. package/dist/service-provider/function-utils.d.ts +55 -0
  87. package/dist/service-provider/function-utils.d.ts.map +1 -0
  88. package/dist/service-provider/function-utils.js +30 -0
  89. package/dist/service-provider/index.d.ts +10 -0
  90. package/dist/service-provider/index.d.ts.map +1 -0
  91. package/dist/service-provider/interfaces/IAuthProvider.d.ts +68 -0
  92. package/dist/service-provider/interfaces/IAuthProvider.d.ts.map +1 -0
  93. package/dist/service-provider/interfaces/IDatabaseProvider.d.ts +75 -0
  94. package/dist/service-provider/interfaces/IDatabaseProvider.d.ts.map +1 -0
  95. package/dist/service-provider/interfaces/IFunctionProvider.d.ts +49 -0
  96. package/dist/service-provider/interfaces/IFunctionProvider.d.ts.map +1 -0
  97. package/dist/service-provider/interfaces/IStorageProvider.d.ts +118 -0
  98. package/dist/service-provider/interfaces/IStorageProvider.d.ts.map +1 -0
  99. package/dist/service-provider/interfaces/ServiceProvider.d.ts +24 -0
  100. package/dist/service-provider/interfaces/ServiceProvider.d.ts.map +1 -0
  101. package/dist/service-provider/interfaces/common.d.ts +5 -0
  102. package/dist/service-provider/interfaces/common.d.ts.map +1 -0
  103. package/dist/service-provider/service-provider-model.d.ts +26 -7
  104. package/dist/service-provider/service-provider-model.d.ts.map +1 -1
  105. package/dist/service-provider/service-provider-model.js +2 -5
  106. package/dist/services/fire-once-service.d.ts +35 -0
  107. package/dist/services/fire-once-service.d.ts.map +1 -0
  108. package/dist/services/fire-once-service.js +61 -0
  109. package/dist/store/async-action-effects.d.ts +179 -0
  110. package/dist/store/async-action-effects.d.ts.map +1 -0
  111. package/dist/store/async-action-effects.js +97 -0
  112. package/dist/store/async-action-utils.d.ts +151 -0
  113. package/dist/store/async-action-utils.d.ts.map +1 -0
  114. package/dist/store/async-action-utils.js +41 -0
  115. package/dist/store/index.d.ts +9 -0
  116. package/dist/store/index.d.ts.map +1 -0
  117. package/dist/store/mini-rx.store.d.ts.map +1 -1
  118. package/dist/store/mini-rx.store.js +7 -10
  119. package/dist/store/spa-app-actions.d.ts +5 -22
  120. package/dist/store/spa-app-actions.d.ts.map +1 -1
  121. package/dist/store/spa-app-actions.js +7 -23
  122. package/dist/store/spa-app-effects.d.ts +0 -17
  123. package/dist/store/spa-app-effects.d.ts.map +1 -1
  124. package/dist/store/spa-app-effects.js +8 -49
  125. package/dist/store/spa-app-reducer.d.ts +5 -10
  126. package/dist/store/spa-app-reducer.d.ts.map +1 -1
  127. package/dist/store/spa-app-reducer.js +26 -21
  128. package/dist/store/spa-app-selector.d.ts +2 -2
  129. package/dist/store/spa-app-selector.d.ts.map +1 -1
  130. package/dist/store/spa-app-selector.js +5 -11
  131. package/dist/stories/introduction.stories.d.ts +11 -0
  132. package/dist/stories/introduction.stories.d.ts.map +1 -0
  133. package/package.json +36 -53
  134. package/dist/PdSpaHelper.d.ts +0 -83
  135. package/dist/PdSpaHelper.d.ts.map +0 -1
  136. package/dist/PdSpaHelper.js +0 -496
  137. package/dist/defaultpage/default-confirm-popup.d.ts +0 -19
  138. package/dist/defaultpage/default-confirm-popup.d.ts.map +0 -1
  139. package/dist/defaultpage/default-confirm-popup.js +0 -73
  140. package/dist/defaultpage/default-dialog-popup.d.ts +0 -19
  141. package/dist/defaultpage/default-dialog-popup.d.ts.map +0 -1
  142. package/dist/defaultpage/default-dialog-popup.js +0 -103
  143. package/dist/defaultpage/default-login.d.ts +0 -6
  144. package/dist/defaultpage/default-login.d.ts.map +0 -1
  145. package/dist/defaultpage/default-login.js +0 -33
  146. package/dist/defaultpage/default-not-found.d.ts +0 -6
  147. package/dist/defaultpage/default-not-found.d.ts.map +0 -1
  148. package/dist/defaultpage/default-popup.d.ts +0 -7
  149. package/dist/defaultpage/default-popup.d.ts.map +0 -1
  150. package/dist/defaultpage/default-popup.js +0 -23
  151. package/dist/defaultpage/default-step-address.d.ts +0 -14
  152. package/dist/defaultpage/default-step-address.d.ts.map +0 -1
  153. package/dist/defaultpage/default-step-address.js +0 -78
  154. package/dist/defaultpage/default-step-summary.d.ts +0 -28
  155. package/dist/defaultpage/default-step-summary.d.ts.map +0 -1
  156. package/dist/defaultpage/default-step-summary.js +0 -66
  157. package/dist/defaultpage/default-view-page.d.ts +0 -10
  158. package/dist/defaultpage/default-view-page.d.ts.map +0 -1
  159. package/dist/defaultpage/default-view-page.js +0 -67
  160. package/dist/defaultpage/default-wizard.d.ts +0 -37
  161. package/dist/defaultpage/default-wizard.d.ts.map +0 -1
  162. package/dist/defaultpage/default-wizard.js +0 -264
  163. package/dist/defaultpage/pd-default-wizard-step.d.ts +0 -58
  164. package/dist/defaultpage/pd-default-wizard-step.d.ts.map +0 -1
  165. package/dist/defaultpage/pd-default-wizard-step.js +0 -147
  166. package/dist/generated/locale-wrapper/be-wrapper.d.ts +0 -62
  167. package/dist/generated/locale-wrapper/be-wrapper.d.ts.map +0 -1
  168. package/dist/generated/locale-wrapper/de-wrapper.d.ts +0 -62
  169. package/dist/generated/locale-wrapper/de-wrapper.d.ts.map +0 -1
  170. package/dist/generated/locale-wrapper/en-wrapper.d.ts +0 -62
  171. package/dist/generated/locale-wrapper/en-wrapper.d.ts.map +0 -1
  172. package/dist/helper/blob-helper.d.ts +0 -3
  173. package/dist/helper/blob-helper.d.ts.map +0 -1
  174. package/dist/helper/blob-helper.js +0 -37
  175. package/dist/helper/date-helper.d.ts +0 -27
  176. package/dist/helper/date-helper.d.ts.map +0 -1
  177. package/dist/helper/date-helper.js +0 -138
  178. package/dist/helper/locale-format.d.ts +0 -4
  179. package/dist/helper/locale-format.d.ts.map +0 -1
  180. package/dist/helper/locale-format.js +0 -19
  181. package/dist/helper/number-helper.d.ts +0 -2
  182. package/dist/helper/number-helper.d.ts.map +0 -1
  183. package/dist/helper/number-helper.js +0 -14
  184. package/dist/helper/price-helper.d.ts +0 -5
  185. package/dist/helper/price-helper.d.ts.map +0 -1
  186. package/dist/helper/price-helper.js +0 -25
  187. package/dist/helper/text-helper.d.ts +0 -3
  188. package/dist/helper/text-helper.d.ts.map +0 -1
  189. package/dist/helper/text-helper.js +0 -6
  190. package/dist/popup/wizard-close-popup.d.ts +0 -11
  191. package/dist/popup/wizard-close-popup.d.ts.map +0 -1
  192. package/dist/popup/wizard-close-popup.js +0 -63
  193. package/dist/popup/wizard-reload-popup.d.ts +0 -14
  194. package/dist/popup/wizard-reload-popup.d.ts.map +0 -1
  195. package/dist/popup/wizard-reload-popup.js +0 -76
  196. package/dist/service-provider/firebase/auth.d.ts +0 -19
  197. package/dist/service-provider/firebase/auth.d.ts.map +0 -1
  198. package/dist/service-provider/firebase/auth.js +0 -69
  199. package/dist/service-provider/firebase/firestorage-client.d.ts +0 -22
  200. package/dist/service-provider/firebase/firestorage-client.d.ts.map +0 -1
  201. package/dist/service-provider/firebase/firestorage-client.js +0 -237
  202. package/dist/service-provider/firebase/firestore-client.d.ts +0 -12
  203. package/dist/service-provider/firebase/firestore-client.d.ts.map +0 -1
  204. package/dist/service-provider/firebase/firestore-client.js +0 -26
  205. package/dist/service-provider/firebase/functions-client.d.ts +0 -10
  206. package/dist/service-provider/firebase/functions-client.d.ts.map +0 -1
  207. package/dist/service-provider/firebase/functions-client.js +0 -64
  208. package/dist/service-provider/firebase/messagingFirebaseClient.d.ts +0 -9
  209. package/dist/service-provider/firebase/messagingFirebaseClient.d.ts.map +0 -1
  210. package/dist/service-provider/firebase/messagingFirebaseClient.js +0 -73
  211. package/dist/service-provider/mock/auth.d.ts +0 -6
  212. package/dist/service-provider/mock/auth.d.ts.map +0 -1
  213. package/dist/service-provider/mock/auth.js +0 -65
  214. package/dist/service-provider/mock/function-client.d.ts +0 -7
  215. package/dist/service-provider/mock/function-client.d.ts.map +0 -1
  216. package/dist/service-provider/mock/function-client.js +0 -32
  217. package/dist/service-provider/mock/storage-client.d.ts +0 -11
  218. package/dist/service-provider/mock/storage-client.d.ts.map +0 -1
  219. package/dist/service-provider/mock/storage-client.js +0 -110
  220. package/dist/service-provider/service-provider-impl.d.ts +0 -27
  221. package/dist/service-provider/service-provider-impl.d.ts.map +0 -1
  222. package/dist/service-provider/service-provider-impl.js +0 -241
  223. package/dist/store/indexDB.d.ts.map +0 -1
  224. package/dist/stories/address-edit.stories.d.ts +0 -27
  225. package/dist/stories/address-edit.stories.d.ts.map +0 -1
  226. package/dist/stories/address-new.stories.d.ts +0 -33
  227. package/dist/stories/address-new.stories.d.ts.map +0 -1
  228. package/dist/stories/default-confirm-popup.stories.d.ts +0 -24
  229. package/dist/stories/default-confirm-popup.stories.d.ts.map +0 -1
  230. package/dist/stories/default-dialog-popup.stories.d.ts +0 -23
  231. package/dist/stories/default-dialog-popup.stories.d.ts.map +0 -1
  232. package/dist/stories/default-login.stories.d.ts +0 -10
  233. package/dist/stories/default-login.stories.d.ts.map +0 -1
  234. package/dist/stories/default-popup.stories.d.ts +0 -9
  235. package/dist/stories/default-popup.stories.d.ts.map +0 -1
  236. package/dist/stories/pd-loading-state.stories.d.ts +0 -30
  237. package/dist/stories/pd-loading-state.stories.d.ts.map +0 -1
  238. package/dist/stories/pd-toast.stories.d.ts +0 -27
  239. package/dist/stories/pd-toast.stories.d.ts.map +0 -1
  240. package/dist/stories/routing.stories.d.ts +0 -24
  241. package/dist/stories/routing.stories.d.ts.map +0 -1
  242. package/dist/stories/test-impls/address-test.d.ts +0 -6
  243. package/dist/stories/test-impls/address-test.d.ts.map +0 -1
  244. package/dist/stories/test-impls/test-mock-app.d.ts +0 -15
  245. package/dist/stories/test-impls/test-mock-app.d.ts.map +0 -1
  246. package/dist/stories/test-impls/test-pages/test-home-page.d.ts +0 -7
  247. package/dist/stories/test-impls/test-pages/test-home-page.d.ts.map +0 -1
  248. package/dist/stories/test-impls/test-pages/test-not-found-page.d.ts +0 -5
  249. package/dist/stories/test-impls/test-pages/test-not-found-page.d.ts.map +0 -1
  250. package/dist/stories/test-impls/test-pages/test-wizard-step.d.ts +0 -17
  251. package/dist/stories/test-impls/test-pages/test-wizard-step.d.ts.map +0 -1
  252. package/dist/stories/test-impls/test-pages/test-wizard.d.ts +0 -16
  253. package/dist/stories/test-impls/test-pages/test-wizard.d.ts.map +0 -1
  254. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-error.d.ts +0 -8
  255. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-error.d.ts.map +0 -1
  256. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-info.d.ts +0 -8
  257. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-info.d.ts.map +0 -1
  258. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-warn.d.ts +0 -8
  259. package/dist/stories/test-impls/test-popups/default-confirm-popup-test-warn.d.ts.map +0 -1
  260. package/dist/stories/test-impls/test-popups/default-dialog-popup-test.d.ts +0 -13
  261. package/dist/stories/test-impls/test-popups/default-dialog-popup-test.d.ts.map +0 -1
  262. package/dist/stories/test-impls/test-popups/default-popup-test.d.ts +0 -5
  263. package/dist/stories/test-impls/test-popups/default-popup-test.d.ts.map +0 -1
  264. package/dist/stories/test-wizard-step.stories.d.ts +0 -11
  265. package/dist/stories/test-wizard-step.stories.d.ts.map +0 -1
  266. package/dist/stories/test-wizard.stories.d.ts +0 -9
  267. package/dist/stories/test-wizard.stories.d.ts.map +0 -1
  268. package/dist/tmpown/pd-loading-state.d.ts +0 -9
  269. package/dist/tmpown/pd-loading-state.d.ts.map +0 -1
  270. package/dist/tmpown/pd-loading-state.js +0 -196
  271. package/dist/tmpown/pd-login.d.ts +0 -13
  272. package/dist/tmpown/pd-login.d.ts.map +0 -1
  273. package/dist/tmpown/pd-login.js +0 -165
  274. package/dist/tmpown/pd-toast.d.ts +0 -13
  275. package/dist/tmpown/pd-toast.d.ts.map +0 -1
  276. package/dist/tmpown/pd-toast.js +0 -128
@@ -0,0 +1,118 @@
1
+ /**
2
+ * File upload request
3
+ */
4
+ export interface UploadFileRequest {
5
+ /** Target file name in storage */
6
+ fileName: string;
7
+ /** Base64 encoded file data URL */
8
+ base64DataURL: string;
9
+ /** Human-readable description name */
10
+ descriptionName: string;
11
+ /** Detailed description */
12
+ description: string;
13
+ /** Storage bucket/container name */
14
+ storageName: string;
15
+ /** Reference key for grouping files */
16
+ referenceKey: string;
17
+ /** Optional subfolder path */
18
+ subFolderName?: string;
19
+ /** Mark file as read-only */
20
+ readonly?: boolean;
21
+ }
22
+ /**
23
+ * Result of an upload operation
24
+ */
25
+ export interface UploadResult {
26
+ /** Full storage path of uploaded file */
27
+ fullPath: string;
28
+ /** Download URL for the file */
29
+ downloadURL: string;
30
+ }
31
+ /**
32
+ * Stored document metadata
33
+ */
34
+ export interface StorageDocument {
35
+ /** Storage bucket/container name */
36
+ storageName: string;
37
+ /** Reference key for grouping */
38
+ refKey: string;
39
+ /** File name */
40
+ fileName: string;
41
+ /** Full storage path */
42
+ filePath: string;
43
+ /** Optional subfolder */
44
+ subFolderName?: string;
45
+ /** MIME type or document type */
46
+ documentType?: string;
47
+ /** Human-readable description */
48
+ description?: string;
49
+ /** Description name */
50
+ descriptionName?: string;
51
+ /** Creation timestamp */
52
+ creation?: Date;
53
+ /** Creator user ID */
54
+ creator?: string;
55
+ /** File size in bytes */
56
+ size?: number;
57
+ /** Read-only flag */
58
+ readonly?: boolean;
59
+ /** Additional metadata */
60
+ metaData?: unknown;
61
+ }
62
+ /**
63
+ * Options for listing files
64
+ */
65
+ export interface ListFilesOptions {
66
+ /** Storage bucket name */
67
+ storageName: string;
68
+ /** Reference key for filtering */
69
+ referenceKey: string;
70
+ /** Optional subfolder */
71
+ subFolderName?: string;
72
+ }
73
+ /**
74
+ * Options for getting a single file
75
+ */
76
+ export interface GetFileOptions {
77
+ /** Storage bucket name */
78
+ storageName: string;
79
+ /** Reference key */
80
+ referenceKey: string;
81
+ /** File name */
82
+ fileName: string;
83
+ /** Optional subfolder */
84
+ subFolderName?: string;
85
+ }
86
+ /**
87
+ * File storage provider interface
88
+ *
89
+ * Abstracts file storage operations from specific implementations
90
+ * (Firebase Storage, S3, Mock, etc.)
91
+ */
92
+ export interface IStorageProvider {
93
+ /**
94
+ * Upload a file to storage
95
+ * @returns Upload result with path and download URL
96
+ */
97
+ uploadFile(request: UploadFileRequest): Promise<UploadResult>;
98
+ /**
99
+ * Download a file from storage
100
+ * @returns Base64 encoded data URL
101
+ */
102
+ downloadFile(options: GetFileOptions): Promise<string>;
103
+ /**
104
+ * Delete a file from storage
105
+ */
106
+ deleteFile(options: GetFileOptions): Promise<void>;
107
+ /**
108
+ * List files in a storage location
109
+ * @returns Array of storage documents
110
+ */
111
+ listFiles(options: ListFilesOptions): Promise<StorageDocument[]>;
112
+ /**
113
+ * Get metadata for a single file
114
+ * @returns Storage document metadata or null if not found
115
+ */
116
+ getFile(options: GetFileOptions): Promise<StorageDocument | null>;
117
+ }
118
+ //# sourceMappingURL=IStorageProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IStorageProvider.d.ts","sourceRoot":"","sources":["../../../src/service-provider/interfaces/IStorageProvider.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE9D;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAEjE;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACnE"}
@@ -0,0 +1,24 @@
1
+ import { IAuthProvider } from './IAuthProvider.js';
2
+ import { IFunctionProvider } from './IFunctionProvider.js';
3
+ import { IStorageProvider } from './IStorageProvider.js';
4
+ import { IDatabaseProvider } from './IDatabaseProvider.js';
5
+ /**
6
+ * Complete service provider configuration
7
+ *
8
+ * This is the main type that provider packages (pd-provider-firebase,
9
+ * pd-provider-mock, etc.) must implement.
10
+ *
11
+ * Note: Messaging is NOT part of this interface - it remains Firebase-specific
12
+ * and is handled directly in pd-provider-firebase.
13
+ */
14
+ export interface ServiceProvider {
15
+ /** Authentication provider (required) */
16
+ auth: IAuthProvider;
17
+ /** Cloud functions provider (required) */
18
+ functions: IFunctionProvider;
19
+ /** File storage provider (required) */
20
+ storage: IStorageProvider;
21
+ /** Database provider (optional - not all apps need real-time database) */
22
+ database?: IDatabaseProvider;
23
+ }
24
+ //# sourceMappingURL=ServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceProvider.d.ts","sourceRoot":"","sources":["../../../src/service-provider/interfaces/ServiceProvider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,IAAI,EAAE,aAAa,CAAC;IAEpB,0CAA0C;IAC1C,SAAS,EAAE,iBAAiB,CAAC;IAE7B,uCAAuC;IACvC,OAAO,EAAE,gBAAgB,CAAC;IAE1B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Unsubscribe function returned by listeners/subscriptions
3
+ */
4
+ export type Unsubscribe = () => void;
5
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/service-provider/interfaces/common.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC"}
@@ -31,13 +31,14 @@ export interface FunctionDefinition {
31
31
  fadeWindow: boolean;
32
32
  successTxt: string | TemplateResult;
33
33
  pendingTxt: string | TemplateResult;
34
- param?: any;
34
+ /** Additional parameters passed to the function */
35
+ param?: Record<string, unknown>;
35
36
  redirect?: string;
36
37
  logoutOnFail?: boolean;
37
38
  }
38
39
  export interface FunctionParam {
39
40
  func: FunctionDefinition;
40
- inputData: any;
41
+ inputData: unknown;
41
42
  }
42
43
  export interface FunctionsConfig {
43
44
  region: string;
@@ -52,6 +53,7 @@ export interface MenuElement {
52
53
  name: string;
53
54
  sec?: string;
54
55
  route?: string;
56
+ requiredRoles?: string[];
55
57
  action?: () => void;
56
58
  topItem?: boolean;
57
59
  ref?: HTMLElement;
@@ -63,6 +65,8 @@ export interface NavigationPage {
63
65
  pattern: Array<string>;
64
66
  auth: boolean;
65
67
  authFallback?: string;
68
+ /** Required roles (claims) for this page - user must have at least one (OR logic) */
69
+ roles?: string[];
66
70
  menu?: Array<MenuElement>;
67
71
  topMenu?: Array<MenuElement>;
68
72
  withTeaser?: boolean;
@@ -76,6 +80,8 @@ export interface NavigationConfig {
76
80
  pages: Array<NavigationPage>;
77
81
  includeLogin: boolean;
78
82
  defaultPostLoginRoute?: boolean;
83
+ /** Route to redirect to after logout. Defaults to "/" (home) */
84
+ logoutRedirect?: string;
79
85
  }
80
86
  export interface LinkObj {
81
87
  name: string;
@@ -88,10 +94,20 @@ export interface Footer {
88
94
  copyright?: string;
89
95
  links: Array<LinkObj>;
90
96
  }
97
+ /** mini-rx-store reducer function type */
98
+ export type ReducerFunction<S = unknown> = (state: S, action: {
99
+ type: string;
100
+ payload?: unknown;
101
+ }) => S;
91
102
  export interface StoreConfig {
92
103
  appName: string;
93
- reducer: any;
94
- effects: Array<any>;
104
+ /** Reducers object passed to mini-rx-store configureStore */
105
+ reducer: Record<string, ReducerFunction>;
106
+ /**
107
+ * Effect functions for mini-rx-store.
108
+ * Uses unknown[] as mini-rx-store expects Observable<any> internally.
109
+ */
110
+ effects: unknown[];
95
111
  }
96
112
  export interface FileStorage {
97
113
  name: string;
@@ -106,7 +122,7 @@ export interface MessagingConfig {
106
122
  export interface AppConfiguration {
107
123
  serviceProvider?: ServiceProviderConfiguration;
108
124
  mock?: {
109
- mockResponse?: Map<string, (functionInput: any) => FunctionResult>;
125
+ mockResponse?: Map<string, (functionInput: unknown) => FunctionResult>;
110
126
  mockWaitTime?: number;
111
127
  };
112
128
  navigationConfigParam: NavigationConfig;
@@ -139,12 +155,15 @@ export interface StorageDocument {
139
155
  creator?: string;
140
156
  size?: number;
141
157
  readonly?: boolean;
142
- metaData?: any;
158
+ /** Firebase FullMetadata or custom metadata object */
159
+ metaData?: unknown;
143
160
  }
161
+ /** Firestore query constraint value types */
162
+ export type FirestoreValueType = string | number | boolean | null | Date | FirestoreValueType[];
144
163
  export interface CollectionContraint {
145
164
  type: "where";
146
165
  field: string;
147
166
  operator: "<" | ">" | ">=" | "<=" | "==" | "!=" | "array-contains" | "array-contains-any" | "in" | "not-in";
148
- value: any;
167
+ value: FirestoreValueType;
149
168
  }
150
169
  //# sourceMappingURL=service-provider-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-provider-model.d.ts","sourceRoot":"","sources":["../../src/service-provider/service-provider-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-provider-model.d.ts","sourceRoot":"","sources":["../../src/service-provider/service-provider-model.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,5 @@ class BusinessError extends Error {
13
13
  Object.setPrototypeOf(this, new.target.prototype);
14
14
  }
15
15
  }
16
- export {
17
- BusinessError,
18
- SC_INVALID_USER,
19
- SC_TECHNICAL_FAILURE
20
- };
16
+
17
+ export { BusinessError, SC_INVALID_USER, SC_TECHNICAL_FAILURE };
@@ -0,0 +1,35 @@
1
+ import { Action } from 'ts-action';
2
+ declare class FireOnceService {
3
+ private _firedKeys;
4
+ /**
5
+ * Execute an action only if it hasn't been fired before for the given key.
6
+ *
7
+ * @param key - Unique identifier for this fire-once action
8
+ * @param action - The action to dispatch
9
+ * @returns true if action was dispatched, false if already fired
10
+ */
11
+ fireOnce(key: string, action: Action): boolean;
12
+ /**
13
+ * Check if a key has been fired.
14
+ *
15
+ * @param key - The key to check
16
+ * @returns true if the key has been fired
17
+ */
18
+ hasFired(key: string): boolean;
19
+ /**
20
+ * Reset a specific key or all keys.
21
+ * Useful for logout scenarios or testing.
22
+ *
23
+ * @param key - Optional key to reset. If not provided, resets all keys.
24
+ */
25
+ reset(key?: string): void;
26
+ /**
27
+ * Get all fired keys (for debugging).
28
+ *
29
+ * @returns Array of all fired keys
30
+ */
31
+ getFiredKeys(): string[];
32
+ }
33
+ export declare const fireOnceService: FireOnceService;
34
+ export {};
35
+ //# sourceMappingURL=fire-once-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fire-once-service.d.ts","sourceRoot":"","sources":["../../src/services/fire-once-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAIxC,cAAM,eAAe;IACnB,OAAO,CAAC,UAAU,CAAqB;IAEvC;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAY9C;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAUzB;;;;OAIG;IACH,YAAY,IAAI,MAAM,EAAE;CAGzB;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { pdStore } from '../store/mini-rx.store.js';
2
+ import { createLogger } from '../helper/logger.js';
3
+
4
+ const logger = createLogger("FireOnceService");
5
+ class FireOnceService {
6
+ constructor() {
7
+ this._firedKeys = /* @__PURE__ */ new Set();
8
+ }
9
+ /**
10
+ * Execute an action only if it hasn't been fired before for the given key.
11
+ *
12
+ * @param key - Unique identifier for this fire-once action
13
+ * @param action - The action to dispatch
14
+ * @returns true if action was dispatched, false if already fired
15
+ */
16
+ fireOnce(key, action) {
17
+ if (this._firedKeys.has(key)) {
18
+ logger.debug(`Key already fired, skipping: ${key}`);
19
+ return false;
20
+ }
21
+ this._firedKeys.add(key);
22
+ pdStore().dispatch(action);
23
+ logger.debug(`Action fired for key: ${key}`);
24
+ return true;
25
+ }
26
+ /**
27
+ * Check if a key has been fired.
28
+ *
29
+ * @param key - The key to check
30
+ * @returns true if the key has been fired
31
+ */
32
+ hasFired(key) {
33
+ return this._firedKeys.has(key);
34
+ }
35
+ /**
36
+ * Reset a specific key or all keys.
37
+ * Useful for logout scenarios or testing.
38
+ *
39
+ * @param key - Optional key to reset. If not provided, resets all keys.
40
+ */
41
+ reset(key) {
42
+ if (key) {
43
+ this._firedKeys.delete(key);
44
+ logger.debug(`Reset key: ${key}`);
45
+ } else {
46
+ this._firedKeys.clear();
47
+ logger.debug("Reset all keys");
48
+ }
49
+ }
50
+ /**
51
+ * Get all fired keys (for debugging).
52
+ *
53
+ * @returns Array of all fired keys
54
+ */
55
+ getFiredKeys() {
56
+ return Array.from(this._firedKeys);
57
+ }
58
+ }
59
+ const fireOnceService = new FireOnceService();
60
+
61
+ export { fireOnceService };
@@ -0,0 +1,179 @@
1
+ import { Action } from 'ts-action';
2
+ import { AsyncActionGroupBase } from './async-action-utils.js';
3
+ export interface LoadingEffectOptions {
4
+ /** Show modal overlay (default: false) */
5
+ modal?: boolean;
6
+ /** Show small background loader (default: false) */
7
+ smallBackground?: boolean;
8
+ }
9
+ export interface ErrorToastOptions {
10
+ /** Custom function to get error message from error code */
11
+ getErrorMessage?: (code: number) => string;
12
+ /** Default error message when code not found */
13
+ defaultErrorMessage?: string;
14
+ /** Toast duration in ms (default: -1 = persistent, user must close manually) */
15
+ duration?: number;
16
+ }
17
+ export interface SuccessToastOptions {
18
+ /** Default toast duration in ms (default: 4000) */
19
+ defaultDuration?: number;
20
+ }
21
+ /**
22
+ * Creates an effect that adds loading state when async actions start.
23
+ *
24
+ * @param groups - Array of async action groups to monitor
25
+ * @param options - Loading state display options
26
+ * @returns Effect that dispatches addLoadingState actions
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * // Modal loading for specific groups
31
+ * export const modalLoadingEffect = createLoadingEffect(
32
+ * [loadProfile, saveProfile],
33
+ * { modal: true }
34
+ * );
35
+ *
36
+ * // Background loading for other groups
37
+ * export const bgLoadingEffect = createLoadingEffect(
38
+ * [loadEvents, loadRequests],
39
+ * { smallBackground: true }
40
+ * );
41
+ * ```
42
+ */
43
+ export declare function createLoadingEffect(groups: AsyncActionGroupBase[], options?: LoadingEffectOptions): import('rxjs').Observable<{
44
+ payload: import('@progressive-development/pd-content').LoadingState;
45
+ } & {
46
+ type: "SPA_APP_ADD_LOADING";
47
+ }> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
48
+ /**
49
+ * Creates an effect that removes loading state when async actions complete.
50
+ *
51
+ * @param groups - Array of async action groups to monitor
52
+ * @returns Effect that dispatches removeLoadingState actions
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * export const removeLoadingEffect = createRemoveLoadingEffect([
57
+ * loadProfile, saveProfile, loadEvents, loadRequests
58
+ * ]);
59
+ * ```
60
+ */
61
+ export declare function createRemoveLoadingEffect(groups: AsyncActionGroupBase[]): import('rxjs').Observable<{
62
+ payload: string;
63
+ } & {
64
+ type: "SPA_APP_REMOVE_LOADING";
65
+ }> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
66
+ /**
67
+ * Creates an effect that shows success toast when async actions succeed.
68
+ * Only shows toast if successTxt is defined and non-empty.
69
+ *
70
+ * @param groups - Array of async action groups to monitor
71
+ * @param options - Toast display options
72
+ * @returns Non-dispatching effect (uses toastBus directly)
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * export const successToastEffect = createSuccessToastEffect([
77
+ * saveProfile, // Has successTxt: "Profile saved!"
78
+ * loadProfile, // Has successTxt: "" (no toast)
79
+ * ]);
80
+ * ```
81
+ */
82
+ export declare function createSuccessToastEffect(groups: AsyncActionGroupBase[], options?: SuccessToastOptions): import('rxjs').Observable<Action<string>> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
83
+ /**
84
+ * Creates an effect that shows error toast when async actions fail.
85
+ * Handles BusinessError to show appropriate error messages.
86
+ *
87
+ * @param groups - Array of async action groups to monitor
88
+ * @param options - Error handling options
89
+ * @returns Non-dispatching effect (uses toastBus directly)
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * export const errorToastEffect = createErrorToastEffect(
94
+ * [loadProfile, saveProfile],
95
+ * {
96
+ * getErrorMessage: (code) => {
97
+ * const messages: Record<number, string> = {
98
+ * [-150]: "Access denied",
99
+ * [-180]: "Technical error",
100
+ * };
101
+ * return messages[code] || "An error occurred";
102
+ * },
103
+ * }
104
+ * );
105
+ * ```
106
+ */
107
+ export declare function createErrorToastEffect(groups: AsyncActionGroupBase[], options?: ErrorToastOptions): import('rxjs').Observable<Action<string> & {
108
+ payload?: unknown;
109
+ }> & import('mini-rx-store/lib/models.js').HasEffectMetadata;
110
+ /**
111
+ * Options for creating all loading-related effects at once.
112
+ */
113
+ export interface CreateLoadingEffectsOptions {
114
+ /** Groups that show modal loading */
115
+ modalGroups?: AsyncActionGroupBase[];
116
+ /** Groups that show background loading */
117
+ backgroundGroups?: AsyncActionGroupBase[];
118
+ /** Groups that show success toasts */
119
+ successToastGroups?: AsyncActionGroupBase[];
120
+ /** All groups for error handling */
121
+ errorGroups?: AsyncActionGroupBase[];
122
+ /** Error message resolver */
123
+ getErrorMessage?: (code: number) => string;
124
+ /** Default error message */
125
+ defaultErrorMessage?: string;
126
+ }
127
+ /**
128
+ * Creates all standard loading-related effects at once.
129
+ * Returns an object with all effects that can be spread into the effects array.
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * const {
134
+ * modalLoadingEffect,
135
+ * bgLoadingEffect,
136
+ * removeLoadingEffect,
137
+ * successToastEffect,
138
+ * errorToastEffect
139
+ * } = createAllLoadingEffects({
140
+ * modalGroups: [loadProfile, saveProfile],
141
+ * backgroundGroups: [loadEvents],
142
+ * successToastGroups: [saveProfile],
143
+ * errorGroups: [loadProfile, saveProfile, loadEvents],
144
+ * getErrorMessage: myErrorMessageFn,
145
+ * });
146
+ *
147
+ * // In store config:
148
+ * effects: [
149
+ * modalLoadingEffect,
150
+ * bgLoadingEffect,
151
+ * removeLoadingEffect,
152
+ * successToastEffect,
153
+ * errorToastEffect,
154
+ * // ... other effects
155
+ * ]
156
+ * ```
157
+ */
158
+ export declare function createAllLoadingEffects(options: CreateLoadingEffectsOptions): {
159
+ modalLoadingEffect: (import('rxjs').Observable<{
160
+ payload: import('@progressive-development/pd-content').LoadingState;
161
+ } & {
162
+ type: "SPA_APP_ADD_LOADING";
163
+ }> & import('mini-rx-store/lib/models.js').HasEffectMetadata) | null;
164
+ bgLoadingEffect: (import('rxjs').Observable<{
165
+ payload: import('@progressive-development/pd-content').LoadingState;
166
+ } & {
167
+ type: "SPA_APP_ADD_LOADING";
168
+ }> & import('mini-rx-store/lib/models.js').HasEffectMetadata) | null;
169
+ removeLoadingEffect: (import('rxjs').Observable<{
170
+ payload: string;
171
+ } & {
172
+ type: "SPA_APP_REMOVE_LOADING";
173
+ }> & import('mini-rx-store/lib/models.js').HasEffectMetadata) | null;
174
+ successToastEffect: (import('rxjs').Observable<Action<string>> & import('mini-rx-store/lib/models.js').HasEffectMetadata) | null;
175
+ errorToastEffect: (import('rxjs').Observable<Action<string> & {
176
+ payload?: unknown;
177
+ }> & import('mini-rx-store/lib/models.js').HasEffectMetadata) | null;
178
+ };
179
+ //# sourceMappingURL=async-action-effects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-action-effects.d.ts","sourceRoot":"","sources":["../../src/store/async-action-effects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAKxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAOpE,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,gDAAgD;IAChD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,oBAAoB,EAAE,EAC9B,OAAO,GAAE,oBAAyB;;;;6DAoBnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,oBAAoB,EAAE;;;;6DAevE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,oBAAoB,EAAE,EAC9B,OAAO,GAAE,mBAAwB,uGAoBlC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,EAAE,EAC9B,OAAO,GAAE,iBAAsB;cASO,OAAO;6DAmB9C;AAMD;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,qCAAqC;IACrC,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC1C,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC5C,oCAAoC;IACpC,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,6BAA6B;IAC7B,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3C,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;kBA1EpC,OAAO;;EAoG9C"}
@@ -0,0 +1,97 @@
1
+ import { createEffect, actions$ } from 'mini-rx-store';
2
+ import { filter, map, tap } from 'rxjs/operators';
3
+ import { toastBus } from '@progressive-development/pd-page';
4
+ import { addLoadingState, removeLoadingState } from './spa-app-actions.js';
5
+ import { isBusinessError } from '../service-provider/function-utils.js';
6
+ import { getConfigForAction } from './async-action-utils.js';
7
+
8
+ function createLoadingEffect(groups, options = {}) {
9
+ const startTypes = groups.map((g) => g.types.action);
10
+ return createEffect(
11
+ actions$.pipe(
12
+ filter((action) => startTypes.includes(action.type)),
13
+ map((action) => {
14
+ const config = getConfigForAction(action, groups);
15
+ return addLoadingState({
16
+ actionKey: config?.actionKey || "unknown",
17
+ loadingTxt: config?.loadingTxt || "Loading...",
18
+ isLoading: true,
19
+ modal: options.modal ?? config?.modal ?? false,
20
+ smallBackground: options.smallBackground ?? config?.smallBackground ?? false
21
+ });
22
+ })
23
+ )
24
+ );
25
+ }
26
+ function createRemoveLoadingEffect(groups) {
27
+ const completionTypes = groups.flatMap((g) => [
28
+ g.types.success,
29
+ g.types.fail
30
+ ]);
31
+ return createEffect(
32
+ actions$.pipe(
33
+ filter((action) => completionTypes.includes(action.type)),
34
+ map((action) => {
35
+ const config = getConfigForAction(action, groups);
36
+ return removeLoadingState(config?.actionKey || "unknown");
37
+ })
38
+ )
39
+ );
40
+ }
41
+ function createSuccessToastEffect(groups, options = {}) {
42
+ const successTypes = groups.filter((g) => g.config.successTxt).map((g) => g.types.success);
43
+ return createEffect(
44
+ actions$.pipe(
45
+ filter((action) => successTypes.includes(action.type)),
46
+ tap((action) => {
47
+ const config = getConfigForAction(action, groups);
48
+ if (config?.successTxt) {
49
+ const duration = config.successDuration || options.defaultDuration || 4e3;
50
+ toastBus.success(config.successTxt, duration);
51
+ }
52
+ })
53
+ ),
54
+ { dispatch: false }
55
+ );
56
+ }
57
+ function createErrorToastEffect(groups, options = {}) {
58
+ const failTypes = groups.map((g) => g.types.fail);
59
+ const defaultMessage = options.defaultErrorMessage || "An error occurred";
60
+ const duration = options.duration ?? -1;
61
+ return createEffect(
62
+ actions$.pipe(
63
+ filter((action) => failTypes.includes(action.type)),
64
+ tap((action) => {
65
+ const error = action.payload;
66
+ let message;
67
+ if (isBusinessError(error)) {
68
+ message = options.getErrorMessage ? options.getErrorMessage(error.code) : error.message || defaultMessage;
69
+ } else if (error instanceof Error) {
70
+ message = error.message || defaultMessage;
71
+ } else {
72
+ message = defaultMessage;
73
+ }
74
+ toastBus.error(message, duration);
75
+ })
76
+ ),
77
+ { dispatch: false }
78
+ );
79
+ }
80
+ function createAllLoadingEffects(options) {
81
+ const allGroups = [
82
+ ...options.modalGroups || [],
83
+ ...options.backgroundGroups || []
84
+ ];
85
+ return {
86
+ modalLoadingEffect: options.modalGroups?.length ? createLoadingEffect(options.modalGroups, { modal: true }) : null,
87
+ bgLoadingEffect: options.backgroundGroups?.length ? createLoadingEffect(options.backgroundGroups, { smallBackground: true }) : null,
88
+ removeLoadingEffect: allGroups.length ? createRemoveLoadingEffect(allGroups) : null,
89
+ successToastEffect: options.successToastGroups?.length ? createSuccessToastEffect(options.successToastGroups) : null,
90
+ errorToastEffect: options.errorGroups?.length ? createErrorToastEffect(options.errorGroups, {
91
+ getErrorMessage: options.getErrorMessage,
92
+ defaultErrorMessage: options.defaultErrorMessage
93
+ }) : null
94
+ };
95
+ }
96
+
97
+ export { createAllLoadingEffects, createErrorToastEffect, createLoadingEffect, createRemoveLoadingEffect, createSuccessToastEffect };