@e1011/es-kit 1.5.2 → 1.5.4

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 (234) hide show
  1. package/dist/lib/cjs/src/core/utils/appState/peregrineMQ/peregrineMQ.js +1 -1
  2. package/dist/lib/cjs/src/core/utils/appState/peregrineMQ/peregrineMQ.js.map +1 -1
  3. package/dist/lib/cjs/src/core/utils/array.js +1 -1
  4. package/dist/lib/cjs/src/core/utils/array.js.map +1 -1
  5. package/dist/lib/cjs/src/core/utils/date.js +1 -1
  6. package/dist/lib/cjs/src/core/utils/date.js.map +1 -1
  7. package/dist/lib/cjs/src/core/utils/helpers/other.js +1 -1
  8. package/dist/lib/cjs/src/core/utils/helpers/other.js.map +1 -1
  9. package/dist/lib/cjs/src/core/utils/helpers/textValueOperations.js +1 -1
  10. package/dist/lib/cjs/src/core/utils/helpers/textValueOperations.js.map +1 -1
  11. package/dist/lib/cjs/src/index.js +1 -1
  12. package/dist/lib/esm/src/core/utils/appState/peregrineMQ/peregrineMQ.js +9 -10
  13. package/dist/lib/esm/src/core/utils/appState/peregrineMQ/peregrineMQ.js.map +1 -1
  14. package/dist/lib/esm/src/core/utils/array.js +2 -18
  15. package/dist/lib/esm/src/core/utils/array.js.map +1 -1
  16. package/dist/lib/esm/src/core/utils/date.js +38 -42
  17. package/dist/lib/esm/src/core/utils/date.js.map +1 -1
  18. package/dist/lib/esm/src/core/utils/helpers/other.js +24 -19
  19. package/dist/lib/esm/src/core/utils/helpers/other.js.map +1 -1
  20. package/dist/lib/esm/src/core/utils/helpers/textValueOperations.js +13 -14
  21. package/dist/lib/esm/src/core/utils/helpers/textValueOperations.js.map +1 -1
  22. package/dist/lib/esm/src/index.js +57 -59
  23. package/dist/lib/esm/src/index.js.map +1 -1
  24. package/dist/lib/tsconfig.tsbuildinfo +1 -1
  25. package/dist/types/src/core/utils/appState/peregrineMQ/index.d.ts +0 -2
  26. package/dist/types/src/core/utils/appState/peregrineMQ/index.d.ts.map +1 -1
  27. package/dist/types/src/core/utils/appState/peregrineMQ/peregrineMQ.d.ts.map +1 -1
  28. package/dist/types/src/core/utils/appState/peregrineMQ/peregrineMQ.stories.d.ts.map +1 -1
  29. package/dist/types/src/core/utils/array.d.ts +2 -10
  30. package/dist/types/src/core/utils/array.d.ts.map +1 -1
  31. package/dist/types/src/core/utils/array.spec.d.ts +1 -1
  32. package/dist/types/src/core/utils/array.spec.d.ts.map +1 -1
  33. package/dist/types/src/core/utils/date.d.ts.map +1 -1
  34. package/dist/types/src/core/utils/helpers/other.d.ts +8 -3
  35. package/dist/types/src/core/utils/helpers/other.d.ts.map +1 -1
  36. package/dist/types/src/core/utils/helpers/textValueOperations.d.ts.map +1 -1
  37. package/dist/types/src/core/utils/keyExtractor.d.ts +1 -1
  38. package/dist/types/src/core/utils/keyExtractor.d.ts.map +1 -1
  39. package/dist/utils/appState/peregrineMQ/peregrineMQ.js +2 -0
  40. package/dist/utils/appState/peregrineMQ/peregrineMQ.js.map +1 -0
  41. package/dist/utils/appState/peregrineMQ/peregrineMQ.types.js.map +1 -0
  42. package/dist/utils/appState/stateMachine/tiny-state-machine.base.js.map +1 -0
  43. package/dist/utils/appState/store/store.vanillajs.js.map +1 -0
  44. package/dist/utils/appState/store/store.vanillajs.templates.js.map +1 -0
  45. package/dist/utils/array.js +2 -0
  46. package/dist/utils/array.js.map +1 -0
  47. package/dist/utils/date.js +2 -0
  48. package/dist/utils/date.js.map +1 -0
  49. package/dist/utils/esm/{src/core/utils/appState → appState}/peregrineMQ/peregrineMQ.js +9 -10
  50. package/dist/utils/esm/appState/peregrineMQ/peregrineMQ.js.map +1 -0
  51. package/dist/utils/esm/appState/peregrineMQ/peregrineMQ.types.js.map +1 -0
  52. package/dist/utils/esm/appState/stateMachine/tiny-state-machine.base.js.map +1 -0
  53. package/dist/utils/esm/appState/store/store.vanillajs.js.map +1 -0
  54. package/dist/utils/esm/appState/store/store.vanillajs.templates.js.map +1 -0
  55. package/dist/utils/esm/array.js +6 -0
  56. package/dist/utils/esm/array.js.map +1 -0
  57. package/dist/utils/esm/date.js +100 -0
  58. package/dist/utils/esm/date.js.map +1 -0
  59. package/dist/utils/esm/helpers/birthnumber.validator.js.map +1 -0
  60. package/dist/utils/esm/helpers/birthnumberCZSKvalidator.js.map +1 -0
  61. package/dist/utils/esm/helpers/cancelableDelayedFunction.js.map +1 -0
  62. package/dist/utils/esm/helpers/date.js.map +1 -0
  63. package/dist/utils/esm/helpers/deviceInfo.js.map +1 -0
  64. package/dist/utils/esm/helpers/emailMatcher.js.map +1 -0
  65. package/dist/utils/esm/helpers/file.js.map +1 -0
  66. package/dist/utils/esm/helpers/fileValidator.js.map +1 -0
  67. package/dist/utils/esm/helpers/objectOperations.js.map +1 -0
  68. package/dist/utils/esm/helpers/other.js +29 -0
  69. package/dist/utils/esm/helpers/other.js.map +1 -0
  70. package/dist/utils/esm/helpers/text.js.map +1 -0
  71. package/dist/utils/esm/helpers/textValueOperations.js +17 -0
  72. package/dist/utils/esm/helpers/textValueOperations.js.map +1 -0
  73. package/dist/utils/esm/helpers/ui.js.map +1 -0
  74. package/dist/utils/esm/helpers/valueOperations.js.map +1 -0
  75. package/dist/utils/esm/index.js +125 -0
  76. package/dist/utils/esm/{src/core/utils/index.js.map → index.js.map} +1 -1
  77. package/dist/utils/esm/keyExtractor.js.map +1 -0
  78. package/dist/utils/esm/webComponents/webComponent.utils.js.map +1 -0
  79. package/dist/utils/helpers/birthnumber.validator.js.map +1 -0
  80. package/dist/utils/helpers/birthnumberCZSKvalidator.js.map +1 -0
  81. package/dist/utils/helpers/cancelableDelayedFunction.js.map +1 -0
  82. package/dist/utils/helpers/date.js.map +1 -0
  83. package/dist/utils/helpers/deviceInfo.js.map +1 -0
  84. package/dist/utils/helpers/emailMatcher.js.map +1 -0
  85. package/dist/utils/helpers/file.js.map +1 -0
  86. package/dist/utils/helpers/fileValidator.js.map +1 -0
  87. package/dist/utils/helpers/objectOperations.js.map +1 -0
  88. package/dist/utils/helpers/other.js +2 -0
  89. package/dist/utils/helpers/other.js.map +1 -0
  90. package/dist/utils/helpers/text.js.map +1 -0
  91. package/dist/utils/helpers/textValueOperations.js +2 -0
  92. package/dist/utils/helpers/textValueOperations.js.map +1 -0
  93. package/dist/utils/helpers/ui.js.map +1 -0
  94. package/dist/utils/helpers/valueOperations.js.map +1 -0
  95. package/dist/utils/index.js +2 -0
  96. package/dist/utils/keyExtractor.js.map +1 -0
  97. package/dist/utils/webComponents/webComponent.utils.js.map +1 -0
  98. package/package.json +21 -5
  99. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/native.js +0 -2
  100. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  101. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/rng.js +0 -2
  102. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  103. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/stringify.js +0 -2
  104. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  105. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/v4.js +0 -2
  106. package/dist/lib/cjs/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  107. package/dist/lib/cjs/src/core/utils/appState/peregrineMQ/index.js +0 -2
  108. package/dist/lib/cjs/src/core/utils/appState/peregrineMQ/index.js.map +0 -1
  109. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/native.js +0 -7
  110. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  111. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/rng.js +0 -11
  112. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  113. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/stringify.js +0 -10
  114. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  115. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/v4.js +0 -14
  116. package/dist/lib/esm/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  117. package/dist/lib/esm/src/core/utils/appState/peregrineMQ/index.js +0 -9
  118. package/dist/lib/esm/src/core/utils/appState/peregrineMQ/index.js.map +0 -1
  119. package/dist/ui/styles/generic.anims.css +0 -169
  120. package/dist/ui/styles/generic.anims.css.map +0 -1
  121. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/native.js +0 -7
  122. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  123. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/rng.js +0 -11
  124. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  125. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/stringify.js +0 -10
  126. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  127. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/v4.js +0 -14
  128. package/dist/utils/esm/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  129. package/dist/utils/esm/src/core/utils/appState/peregrineMQ/index.js +0 -9
  130. package/dist/utils/esm/src/core/utils/appState/peregrineMQ/index.js.map +0 -1
  131. package/dist/utils/esm/src/core/utils/appState/peregrineMQ/peregrineMQ.js.map +0 -1
  132. package/dist/utils/esm/src/core/utils/appState/peregrineMQ/peregrineMQ.types.js.map +0 -1
  133. package/dist/utils/esm/src/core/utils/appState/stateMachine/tiny-state-machine.base.js.map +0 -1
  134. package/dist/utils/esm/src/core/utils/appState/store/store.vanillajs.js.map +0 -1
  135. package/dist/utils/esm/src/core/utils/appState/store/store.vanillajs.templates.js.map +0 -1
  136. package/dist/utils/esm/src/core/utils/array.js +0 -22
  137. package/dist/utils/esm/src/core/utils/array.js.map +0 -1
  138. package/dist/utils/esm/src/core/utils/date.js +0 -104
  139. package/dist/utils/esm/src/core/utils/date.js.map +0 -1
  140. package/dist/utils/esm/src/core/utils/helpers/birthnumber.validator.js.map +0 -1
  141. package/dist/utils/esm/src/core/utils/helpers/birthnumberCZSKvalidator.js.map +0 -1
  142. package/dist/utils/esm/src/core/utils/helpers/cancelableDelayedFunction.js.map +0 -1
  143. package/dist/utils/esm/src/core/utils/helpers/date.js.map +0 -1
  144. package/dist/utils/esm/src/core/utils/helpers/deviceInfo.js.map +0 -1
  145. package/dist/utils/esm/src/core/utils/helpers/emailMatcher.js.map +0 -1
  146. package/dist/utils/esm/src/core/utils/helpers/file.js.map +0 -1
  147. package/dist/utils/esm/src/core/utils/helpers/fileValidator.js.map +0 -1
  148. package/dist/utils/esm/src/core/utils/helpers/objectOperations.js.map +0 -1
  149. package/dist/utils/esm/src/core/utils/helpers/other.js +0 -24
  150. package/dist/utils/esm/src/core/utils/helpers/other.js.map +0 -1
  151. package/dist/utils/esm/src/core/utils/helpers/text.js.map +0 -1
  152. package/dist/utils/esm/src/core/utils/helpers/textValueOperations.js +0 -18
  153. package/dist/utils/esm/src/core/utils/helpers/textValueOperations.js.map +0 -1
  154. package/dist/utils/esm/src/core/utils/helpers/ui.js.map +0 -1
  155. package/dist/utils/esm/src/core/utils/helpers/valueOperations.js.map +0 -1
  156. package/dist/utils/esm/src/core/utils/index.js +0 -127
  157. package/dist/utils/esm/src/core/utils/keyExtractor.js.map +0 -1
  158. package/dist/utils/esm/src/core/utils/webComponents/webComponent.utils.js.map +0 -1
  159. package/dist/utils/node_modules/uuid/dist/esm-browser/native.js +0 -2
  160. package/dist/utils/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
  161. package/dist/utils/node_modules/uuid/dist/esm-browser/rng.js +0 -2
  162. package/dist/utils/node_modules/uuid/dist/esm-browser/rng.js.map +0 -1
  163. package/dist/utils/node_modules/uuid/dist/esm-browser/stringify.js +0 -2
  164. package/dist/utils/node_modules/uuid/dist/esm-browser/stringify.js.map +0 -1
  165. package/dist/utils/node_modules/uuid/dist/esm-browser/v4.js +0 -2
  166. package/dist/utils/node_modules/uuid/dist/esm-browser/v4.js.map +0 -1
  167. package/dist/utils/src/core/utils/appState/peregrineMQ/index.js +0 -2
  168. package/dist/utils/src/core/utils/appState/peregrineMQ/index.js.map +0 -1
  169. package/dist/utils/src/core/utils/appState/peregrineMQ/peregrineMQ.js +0 -2
  170. package/dist/utils/src/core/utils/appState/peregrineMQ/peregrineMQ.js.map +0 -1
  171. package/dist/utils/src/core/utils/appState/peregrineMQ/peregrineMQ.types.js.map +0 -1
  172. package/dist/utils/src/core/utils/appState/stateMachine/tiny-state-machine.base.js.map +0 -1
  173. package/dist/utils/src/core/utils/appState/store/store.vanillajs.js.map +0 -1
  174. package/dist/utils/src/core/utils/appState/store/store.vanillajs.templates.js.map +0 -1
  175. package/dist/utils/src/core/utils/array.js +0 -2
  176. package/dist/utils/src/core/utils/array.js.map +0 -1
  177. package/dist/utils/src/core/utils/date.js +0 -2
  178. package/dist/utils/src/core/utils/date.js.map +0 -1
  179. package/dist/utils/src/core/utils/helpers/birthnumber.validator.js.map +0 -1
  180. package/dist/utils/src/core/utils/helpers/birthnumberCZSKvalidator.js.map +0 -1
  181. package/dist/utils/src/core/utils/helpers/cancelableDelayedFunction.js.map +0 -1
  182. package/dist/utils/src/core/utils/helpers/date.js.map +0 -1
  183. package/dist/utils/src/core/utils/helpers/deviceInfo.js.map +0 -1
  184. package/dist/utils/src/core/utils/helpers/emailMatcher.js.map +0 -1
  185. package/dist/utils/src/core/utils/helpers/file.js.map +0 -1
  186. package/dist/utils/src/core/utils/helpers/fileValidator.js.map +0 -1
  187. package/dist/utils/src/core/utils/helpers/objectOperations.js.map +0 -1
  188. package/dist/utils/src/core/utils/helpers/other.js +0 -2
  189. package/dist/utils/src/core/utils/helpers/other.js.map +0 -1
  190. package/dist/utils/src/core/utils/helpers/text.js.map +0 -1
  191. package/dist/utils/src/core/utils/helpers/textValueOperations.js +0 -2
  192. package/dist/utils/src/core/utils/helpers/textValueOperations.js.map +0 -1
  193. package/dist/utils/src/core/utils/helpers/ui.js.map +0 -1
  194. package/dist/utils/src/core/utils/helpers/valueOperations.js.map +0 -1
  195. package/dist/utils/src/core/utils/index.js +0 -2
  196. package/dist/utils/src/core/utils/keyExtractor.js.map +0 -1
  197. package/dist/utils/src/core/utils/webComponents/webComponent.utils.js.map +0 -1
  198. /package/dist/utils/{src/core/utils/appState → appState}/peregrineMQ/peregrineMQ.types.js +0 -0
  199. /package/dist/utils/{src/core/utils/appState → appState}/stateMachine/tiny-state-machine.base.js +0 -0
  200. /package/dist/utils/{src/core/utils/appState → appState}/store/store.vanillajs.js +0 -0
  201. /package/dist/utils/{src/core/utils/appState → appState}/store/store.vanillajs.templates.js +0 -0
  202. /package/dist/utils/esm/{src/core/utils/appState → appState}/peregrineMQ/peregrineMQ.types.js +0 -0
  203. /package/dist/utils/esm/{src/core/utils/appState → appState}/stateMachine/tiny-state-machine.base.js +0 -0
  204. /package/dist/utils/esm/{src/core/utils/appState → appState}/store/store.vanillajs.js +0 -0
  205. /package/dist/utils/esm/{src/core/utils/appState → appState}/store/store.vanillajs.templates.js +0 -0
  206. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/birthnumber.validator.js +0 -0
  207. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/birthnumberCZSKvalidator.js +0 -0
  208. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/cancelableDelayedFunction.js +0 -0
  209. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/date.js +0 -0
  210. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/deviceInfo.js +0 -0
  211. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/emailMatcher.js +0 -0
  212. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/file.js +0 -0
  213. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/fileValidator.js +0 -0
  214. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/objectOperations.js +0 -0
  215. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/text.js +0 -0
  216. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/ui.js +0 -0
  217. /package/dist/utils/esm/{src/core/utils/helpers → helpers}/valueOperations.js +0 -0
  218. /package/dist/utils/esm/{src/core/utils/keyExtractor.js → keyExtractor.js} +0 -0
  219. /package/dist/utils/esm/{src/core/utils/webComponents → webComponents}/webComponent.utils.js +0 -0
  220. /package/dist/utils/{src/core/utils/helpers → helpers}/birthnumber.validator.js +0 -0
  221. /package/dist/utils/{src/core/utils/helpers → helpers}/birthnumberCZSKvalidator.js +0 -0
  222. /package/dist/utils/{src/core/utils/helpers → helpers}/cancelableDelayedFunction.js +0 -0
  223. /package/dist/utils/{src/core/utils/helpers → helpers}/date.js +0 -0
  224. /package/dist/utils/{src/core/utils/helpers → helpers}/deviceInfo.js +0 -0
  225. /package/dist/utils/{src/core/utils/helpers → helpers}/emailMatcher.js +0 -0
  226. /package/dist/utils/{src/core/utils/helpers → helpers}/file.js +0 -0
  227. /package/dist/utils/{src/core/utils/helpers → helpers}/fileValidator.js +0 -0
  228. /package/dist/utils/{src/core/utils/helpers → helpers}/objectOperations.js +0 -0
  229. /package/dist/utils/{src/core/utils/helpers → helpers}/text.js +0 -0
  230. /package/dist/utils/{src/core/utils/helpers → helpers}/ui.js +0 -0
  231. /package/dist/utils/{src/core/utils/helpers → helpers}/valueOperations.js +0 -0
  232. /package/dist/utils/{src/core/utils/index.js.map → index.js.map} +0 -0
  233. /package/dist/utils/{src/core/utils/keyExtractor.js → keyExtractor.js} +0 -0
  234. /package/dist/utils/{src/core/utils/webComponents → webComponents}/webComponent.utils.js +0 -0
@@ -1,5 +1,3 @@
1
- import { PeregrineMQ } from './peregrineMQ';
2
1
  export { PeregrineMQ, PeregrineMQClearError } from './peregrineMQ';
3
- export declare const peregrineMQInstance: PeregrineMQ;
4
2
  export * from './peregrineMQ.types';
5
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/utils/appState/peregrineMQ/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAElE,eAAO,MAAM,mBAAmB,aAAoB,CAAA;AAEpD,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/utils/appState/peregrineMQ/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAElE,cAAc,qBAAqB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"peregrineMQ.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/utils/appState/peregrineMQ/peregrineMQ.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EAAE,MAAM,EAAE,cAAc,EAChC,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,qBAAqB,CAAA;AAG5B,qBAAa,qBAAsB,SAAQ,KAAK;;CAK/C;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,cAAc;IAChD,OAAO,CAAC,EAAE,CAAQ;IAElB,OAAO,CAAC,MAAM,CAIb;IAED;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAyC;IAEzD;;OAEG;IACH,OAAO,CAAC,SAAS,CAA6C;IAE9D;;;;OAIG;IACH,OAAO,CAAC,WAAW,CAWlB;IAED;;;;;OAKG;IACH,OAAO,CAAC,cAAc,CAerB;IAED;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB,CAqBvB;IAED;;;;OAIG;gBACS,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAKxC;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;OAIG;IACH,SAAS,GAAI,QAAQ,MAAM,KAAG;QAC5B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;QAC/B,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;KAClC,CA8BA;IAED;;;OAGG;IACH,WAAW,QAAO,MAAM,EAAE,CAA6B;IAEvD;;;OAGG;IACH,KAAK,QAAO,MAAM,EAAE,CAenB;IAED;;;;OAIG;IACH,aAAa,GAAI,SAAS,MAAM,KAAG,OAAO,CAiBzC;IAED;;;;;OAKG;IACH,OAAO,GAAI,CAAC,EAAE,SAAS,MAAM,EAAE,OAAO,CAAC,KAAG,iBAAiB,CAwB1D;IAED;;;;;OAKG;IACH,SAAS,GAAI,SAAS,MAAM,EAAE,UAAU,QAAQ,KAAG,MAAM,OAAO,CAY/D;IAED;;;;;OAKG;IACH,WAAW,GAAI,UAAU,QAAQ,EAAE,UAAU,kBAAkB,KAAG,OAAO,CAkCxE;IAED;;;;;OAKG;IACH,YAAY,GAAI,UAAU,QAAQ,EAAE,UAAU,MAAM,KAAG,OAAO,CAQ7D;IAED;;;OAGG;IACH,KAAK,QAAO,IAAI,CAOf;IAED;;;OAGG;IACH,KAAK,QAAO,MAAM,CAAW;CAC9B"}
1
+ {"version":3,"file":"peregrineMQ.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/utils/appState/peregrineMQ/peregrineMQ.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EAAE,MAAM,EAAE,cAAc,EAChC,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,qBAAqB,CAAA;AAG5B,qBAAa,qBAAsB,SAAQ,KAAK;;CAK/C;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,cAAc;IAChD,OAAO,CAAC,EAAE,CAAQ;IAElB,OAAO,CAAC,MAAM,CAIb;IAED;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAyC;IAEzD;;OAEG;IACH,OAAO,CAAC,SAAS,CAA6C;IAE9D;;;;OAIG;IACH,OAAO,CAAC,WAAW,CAWlB;IAED;;;;;OAKG;IACH,OAAO,CAAC,cAAc,CAerB;IAED;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB,CAqBvB;IAED;;;;OAIG;gBACS,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAOxC;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;OAIG;IACH,SAAS,GAAI,QAAQ,MAAM,KAAG;QAC5B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;QAC/B,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAA;KAClC,CA8BA;IAED;;;OAGG;IACH,WAAW,QAAO,MAAM,EAAE,CAA6B;IAEvD;;;OAGG;IACH,KAAK,QAAO,MAAM,EAAE,CAenB;IAED;;;;OAIG;IACH,aAAa,GAAI,SAAS,MAAM,KAAG,OAAO,CAiBzC;IAED;;;;;OAKG;IACH,OAAO,GAAI,CAAC,EAAE,SAAS,MAAM,EAAE,OAAO,CAAC,KAAG,iBAAiB,CAwB1D;IAED;;;;;OAKG;IACH,SAAS,GAAI,SAAS,MAAM,EAAE,UAAU,QAAQ,KAAG,MAAM,OAAO,CAY/D;IAED;;;;;OAKG;IACH,WAAW,GAAI,UAAU,QAAQ,EAAE,UAAU,kBAAkB,KAAG,OAAO,CAkCxE;IAED;;;;;OAKG;IACH,YAAY,GAAI,UAAU,QAAQ,EAAE,UAAU,MAAM,KAAG,OAAO,CAQ7D;IAED;;;OAGG;IACH,KAAK,QAAO,IAAI,CAOf;IAED;;;OAGG;IACH,KAAK,QAAO,MAAM,CAAW;CAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"peregrineMQ.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/utils/appState/peregrineMQ/peregrineMQ.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoB,IAAI,EAAE,MAAM,kBAAkB,CAAA;wBAcpD,IAAI;AAHT,wBAGS;AA6FT,eAAO,MAAM,qBAAqB,+FAAyC,CAAA"}
1
+ {"version":3,"file":"peregrineMQ.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/utils/appState/peregrineMQ/peregrineMQ.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoB,IAAI,EAAE,MAAM,kBAAkB,CAAA;wBAgBpD,IAAI;AAHT,wBAGS;AA6FT,eAAO,MAAM,qBAAqB,+FAAyC,CAAA"}
@@ -1,11 +1,3 @@
1
- declare global {
2
- interface Array<T> {
3
- last: T | undefined;
4
- first: T | undefined;
5
- }
6
- }
7
- declare const _default: any[];
8
- export default _default;
9
- export declare const ArrayFirst: any;
10
- export declare const ArrayLast: any;
1
+ export declare const ArrayFirst: <T>(arr: T[]) => T | undefined;
2
+ export declare const ArrayLast: <T>(arr: T[]) => T | undefined;
11
3
  //# sourceMappingURL=array.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../../../src/core/utils/array.ts"],"names":[],"mappings":"AAaA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,GAAG,SAAS,CAAA;QACnB,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;KACrB;CACF;;AAED,wBAA8B;AAG9B,eAAO,MAAM,UAAU,KAAwB,CAAA;AAC/C,eAAO,MAAM,SAAS,KAAuB,CAAA"}
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../../../src/core/utils/array.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,KAAG,CAAC,GAAG,SAAmB,CAAA;AAChE,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,KAAK,CAAC,EAAE,KAAG,CAAC,GAAG,SAAgC,CAAA"}
@@ -1,2 +1,2 @@
1
- import './array';
1
+ export {};
2
2
  //# sourceMappingURL=array.spec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.spec.d.ts","sourceRoot":"","sources":["../../../../../src/core/utils/array.spec.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,CAAA"}
1
+ {"version":3,"file":"array.spec.d.ts","sourceRoot":"","sources":["../../../../../src/core/utils/array.spec.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../../../src/core/utils/date.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAKvC,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAiED,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,MAQxE,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,OAAO,IAAI,GAAG,MAAM,GAAG,MAAM,EAC7B,cAAc,OAAO,CAAC,cAAc,CAAC,KACpC,MAA4D,CAAA;AAE/D,eAAO,MAAM,SAAS,GACpB,OAAO,IAAI,GAAG,MAAM,GAAG,MAAM,EAC7B,cAAc,OAAO,CAAC,cAAc,CAAC,KACpC,MAA0D,CAAA;AAE7D,eAAO,MAAM,WAAW,GAAI,uHAWzB,cAAc,KAAG,MAuBnB,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,UAAU,IAAI,EAAE,QAAQ,IAAI,EAAE,aAAa,MAAM,EAAE,YAAY,MAAM,EACrE,kBAAiB,EAAE,aAAY,QAAkB,KAC/C,MAOH,CAAA"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../../../src/core/utils/date.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAKvC,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAkED,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,MASxE,CAAA;AAED,eAAO,MAAM,cAAc,GACzB,OAAO,IAAI,GAAG,MAAM,GAAG,MAAM,EAC7B,cAAc,OAAO,CAAC,cAAc,CAAC,KACpC,MAA4D,CAAA;AAE/D,eAAO,MAAM,SAAS,GACpB,OAAO,IAAI,GAAG,MAAM,GAAG,MAAM,EAC7B,cAAc,OAAO,CAAC,cAAc,CAAC,KACpC,MAA0D,CAAA;AAE7D,eAAO,MAAM,WAAW,GAAI,uHAWzB,cAAc,KAAG,MAwBnB,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,UAAU,IAAI,EAAE,QAAQ,IAAI,EAAE,aAAa,MAAM,EAAE,YAAY,MAAM,EACrE,kBAAiB,EAAE,aAAY,QAAkB,KAC/C,MAQH,CAAA"}
@@ -1,10 +1,15 @@
1
- import { memoizeWith } from 'ramda';
2
1
  export declare const nestedTernary: (condition: boolean, branchA: any, branchB: any) => any;
3
- export declare const memoize: (...args: readonly any[]) => any;
4
- export declare const memoizeComplex: (...args: readonly any[]) => any;
2
+ /**
3
+ * Creates a memoized version of a function using a custom key function.
4
+ * Replaces ramda's memoizeWith — same API contract.
5
+ */
6
+ declare const memoizeWith: (keyFn: (...args: any[]) => string) => <T extends (...args: any[]) => any>(fn: T) => T;
7
+ export declare const memoize: <T extends (...args: any[]) => any>(fn: T) => T;
8
+ export declare const memoizeComplex: <T extends (...args: any[]) => any>(fn: T) => T;
5
9
  export declare const memoizer: (memoizeFunc?: (...args: any[]) => string) => ReturnType<typeof memoizeWith>;
6
10
  export declare const debounce: (func: () => void, wait?: number, immediate?: boolean) => () => void;
7
11
  export declare const delay: (delay: number) => Promise<string>;
8
12
  export declare const AsyncFunctionTemplate: Function;
9
13
  export declare const isFunctionAsync: (func: (...args: any[]) => unknown) => boolean;
14
+ export {};
10
15
  //# sourceMappingURL=other.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"other.d.ts","sourceRoot":"","sources":["../../../../../../src/core/utils/helpers/other.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,OAAO,CAAA;AAG7C,eAAO,MAAM,aAAa,GAAI,WAAW,OAAO,EAAE,SAAS,GAAG,EAAE,SAAS,GAAG,KAAG,GAAsC,CAAA;AAIrH,eAAO,MAAM,OAAO,kCAAwB,CAAA;AAK5C,eAAO,MAAM,cAAc,kCAAiD,CAAA;AAE5E,eAAO,MAAM,QAAQ,GAGlB,eAAe,GAAG,WAAI,KAAG,MAA8B,KAAG,UAAU,CAAC,OAAO,WAAW,CAA6B,CAAA;AAEvH,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,IAAI,EAAE,aAAU,EAAE,mBAAiB,KAAG,MAAM,IAuBhF,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,CAElD,CAAA;AAEF,eAAO,MAAM,qBAAqB,UAA8C,CAAA;AAEhF,eAAO,MAAM,eAAe,GAC1B,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,KAChC,OAA2E,CAAA"}
1
+ {"version":3,"file":"other.d.ts","sourceRoot":"","sources":["../../../../../../src/core/utils/helpers/other.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,GAAI,WAAW,OAAO,EAAE,SAAS,GAAG,EAAE,SAAS,GAAG,KAAG,GAAsC,CAAA;AAErH;;;GAGG;AACH,QAAA,MAAM,WAAW,GAAI,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,CAAC,KAAG,CAWtG,CAAA;AAED,eAAO,MAAM,OAAO,GAbwC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,KAAG,CAavC,CAAA;AAGhE,eAAO,MAAM,cAAc,GAhBiC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,MAAM,CAAC,KAAG,CAgB3B,CAAA;AAE5E,eAAO,MAAM,QAAQ,GACnB,eAAe,GAAG,MAAM,GAAG,EAAE,KAAG,MAA8B,KAC7D,UAAU,CAAC,OAAO,WAAW,CAA6B,CAAA;AAE7D,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,IAAI,EAAE,aAAU,EAAE,mBAAiB,KAAG,MAAM,IAuBhF,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,KAAG,OAAO,CAAC,MAAM,CAElD,CAAA;AAEF,eAAO,MAAM,qBAAqB,UAA8C,CAAA;AAEhF,eAAO,MAAM,eAAe,GAC1B,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,KAChC,OAA2E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"textValueOperations.d.ts","sourceRoot":"","sources":["../../../../../../src/core/utils/helpers/textValueOperations.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,GAAG,MAAM,KAAG,MAAM,GAAG,MAAuD,CAAA;AAGnH,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MAA6C,CAAA;AAGvF,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,GAAG,MAAM,KAAG,MAAM,GAAG,MAC9B,CAAA;AAGpC,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MAAmE,CAAA;AAElH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAAkE,CAAA;AAEhH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,EAAE,MAAM,MAAM,EAAE,YAAS,EAAE,cAAW,KAAG,OAkBpF,CAAA;AAGD,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,MAAoE,CAAA;AAE/G,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,oBAAe,EAAE,kBAAiB,KAAG,MAK/E,CAAA;AAED,eAAO,MAAM,UAAU,GAClB,IAAI,MAAM,KAAG,MAAsG,CAAA;AAExH,eAAO,MAAM,cAAc,GACtB,IAAI,MAAM,KAAG,MAAkD,CAAA"}
1
+ {"version":3,"file":"textValueOperations.d.ts","sourceRoot":"","sources":["../../../../../../src/core/utils/helpers/textValueOperations.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,GAAG,MAAM,KAAG,MAAM,GAAG,MAAoD,CAAA;AAGhH,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MAAwC,CAAA;AAGlF,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,GAAG,MAAM,KAAG,MAAM,GAAG,MAC9B,CAAA;AAGpC,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MAAmE,CAAA;AAElH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAAkE,CAAA;AAEhH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,EAAE,MAAM,MAAM,EAAE,YAAS,EAAE,cAAW,KAAG,OAkBpF,CAAA;AAGD,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,KAAG,MAAoE,CAAA;AAE/G,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,oBAAe,EAAE,kBAAiB,KAAG,MAK/E,CAAA;AAED,eAAO,MAAM,UAAU,GAClB,IAAI,MAAM,KAAG,MAAsG,CAAA;AAExH,eAAO,MAAM,cAAc,GACtB,IAAI,MAAM,KAAG,MAAkD,CAAA"}
@@ -3,6 +3,6 @@ type ItemLikeObject = {
3
3
  id?: string | number;
4
4
  };
5
5
  export declare function keyExtractorFunction<Item extends ItemLikeObject>(item: Item, index: number): string;
6
- export declare const keyExtractor: any;
6
+ export declare const keyExtractor: typeof keyExtractorFunction;
7
7
  export {};
8
8
  //# sourceMappingURL=keyExtractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyExtractor.d.ts","sourceRoot":"","sources":["../../../../../src/core/utils/keyExtractor.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACrB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,SAAS,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnG;AAED,eAAO,MAAM,YAAY,KAAuC,CAAA"}
1
+ {"version":3,"file":"keyExtractor.d.ts","sourceRoot":"","sources":["../../../../../src/core/utils/keyExtractor.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACrB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,SAAS,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnG;AAED,eAAO,MAAM,YAAY,6BAAuC,CAAA"}
@@ -0,0 +1,2 @@
1
+ "use strict";var a=Object.defineProperty;var c=(h,e,s)=>e in h?a(h,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):h[e]=s;var n=(h,e,s)=>c(h,typeof e!="symbol"?e+"":e,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./peregrineMQ.types.js");class u extends Error{constructor(){super("Clearing PeregrineMQ is not allowed. Please read the documentation for more information."),this.name="PeregrineMQClearError"}}class f{constructor(e,s){n(this,"id");n(this,"config",{allowAutoPrune:!1,pruneInterval:1e4,allowClear:!1});n(this,"channels",new Map);n(this,"listeners",new Map);n(this,"addListener",(e,s)=>{const t=this.listeners.get(e),r=this.channels.get(s);r&&(t?t.push(r):this.listeners.set(e,[r]))});n(this,"removeListener",e=>{const s=this.listeners.get(e);let t=!0;for(const r of s||[])if(t=!r.has(e),!t)break;t&&this.listeners.delete(e)});n(this,"publishToChannel",(e,s,t)=>{const r=this.channels.get(e);if(!r)return d.NON_EXISTENT_CHANNEL;const l=r[Symbol.iterator]();let o=l.next().value;const i=[];for(;o;)i.push(o(e,t)),o=l.next().value;return(i==null?void 0:i.length)===1?i[0]:i});n(this,"configure",e=>{this.config=e;const{allowAutoPrune:s,pruneInterval:t}=e;let r;s&&(r=setInterval(()=>{this.prune()},t));const l=this;return{...s?{clearPruneInterval:()=>{clearInterval(r)},restartPruneInterval:()=>{clearInterval(r),r=setInterval(()=>{l.prune()},t)}}:{}}});n(this,"getChannels",()=>[...this.channels.keys()]);n(this,"prune",()=>{var r;const e=this.channels[Symbol.iterator]();let s=e.next().value;const t=[];for(;s;)((r=s[1])==null?void 0:r.size)===0&&(t.push(s[0]),this.channels.delete(s[0])),s=e.next().value;return t});n(this,"removeChannel",e=>{const s=this.channels.get(e);if(s&&s.size>0){const t=[...s||[]];s.clear();let r=t.length;for(;r--;)this.removeListener(t[r])}return this.channels.delete(e)});n(this,"publish",(e,s)=>{if(e.includes(".")){const t=e.split(".");let{length:r}=t,l=0;const o=[];for(;r--;){const i=this.publishToChannel(t.slice(0,l+1).join("."),r!==t.length-1,s);l+=1,o.push(i)}return o}return this.publishToChannel(e,!1,s)});n(this,"subscribe",(e,s)=>{const t=this.channels.get(e);return t?t.add(s):this.channels.set(e,new Set([s])),this.addListener(s,e),()=>this.unsubscribe(s,{channel:e,prune:!0})});n(this,"unsubscribe",(e,s)=>{const{channel:t,prune:r}=s||{};let l=!1;if(t){const i=this.channels.get(t);return l=i?i.delete(e):!1,r&&(i==null?void 0:i.size)===0&&this.channels.delete(t),this.removeListener(e),l}const o=this.listeners.get(e)||[];for(const i of o)l=i.delete(e),r&&i.size===0&&this.prune();return this.listeners.delete(e),l});n(this,"isSubscribed",(e,s)=>{if(s){const t=this.channels.get(s);return t?t.has(e):!1}return this.listeners.has(e)});n(this,"clear",()=>{if(this.config.allowClear)this.channels.clear(),this.listeners.clear();else throw new u});n(this,"getId",()=>this.id);this.id=e||(typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`),this.configure(s||{})}get length(){return[...this.channels.values()].reduce((e,s)=>e+s.size,0)}}exports.PeregrineMQ=f;exports.PeregrineMQClearError=u;
2
+ //# sourceMappingURL=peregrineMQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peregrineMQ.js","sources":["../../../../src/core/utils/appState/peregrineMQ/peregrineMQ.ts"],"sourcesContent":["import {\n Callback, Config, PeregrineMQApi, PublishToChannelReturnType,\n PublishReturnType, SubscribersSet,\n UnsubscribeOptions, NON_EXISTENT_CHANNEL_TYPE,\n NON_EXISTENT_CHANNEL,\n CallbackPayload,\n} from './peregrineMQ.types'\n\n\nexport class PeregrineMQClearError extends Error {\n constructor() {\n super('Clearing PeregrineMQ is not allowed. Please read the documentation for more information.')\n this.name = 'PeregrineMQClearError'\n }\n}\n\n/**\n * Represents a message queue with publish/subscribe functionality.\n */\nexport class PeregrineMQ implements PeregrineMQApi {\n private id: string\n\n private config: Config = {\n allowAutoPrune: false,\n pruneInterval: 10000,\n allowClear: false,\n }\n\n /**\n * The map of channels and their subscribers sets.\n */\n private channels: Map<string, SubscribersSet> = new Map()\n\n /**\n * The map of listeners and their subscribed channels.\n */\n private listeners: Map<Callback, SubscribersSet[]> = new Map()\n\n /**\n * Adds a callback as a listener to a channel.\n * @param callback The callback function to add as a listener.\n * @param channel The channel to add the listener to.\n */\n private addListener = (callback: Callback, channel: string): void => {\n const listener = this.listeners.get(callback)\n const subscribersSet = this.channels.get(channel)\n\n if (subscribersSet) {\n if (listener) {\n listener.push(subscribersSet)\n } else {\n this.listeners.set(callback, [subscribersSet])\n }\n }\n }\n\n /**\n * Removes the callback from the listeners collection if it is not subscribed to any channels.\n * @description Removes the callback only when it is not present in any other subscriberSet\n * (Ref to Map<string, SubscribersSet>).\n * @param callback The callback to remove from listeners.\n */\n private removeListener = (callback: Callback): void => {\n const channelSubscriberSets = this.listeners.get(callback)\n let isEmpty = true\n\n // eslint-disable-next-line no-restricted-syntax\n for (const channelSubscriberSet of channelSubscriberSets || []) {\n isEmpty = !channelSubscriberSet.has(callback)\n if (!isEmpty) {\n break\n }\n }\n\n if (isEmpty) {\n this.listeners.delete(callback)\n }\n }\n\n /**\n * Publishes data to a channel.\n * @param channel The channel to publish the data to.\n * @param isParent Indicates if the channel is a parent channel.\n * @param data The data to publish.\n * @returns A boolean indicating if the publication was successful.\n */\n private publishToChannel = (\n channel: string, isParent: boolean, data?: unknown,\n ): PublishToChannelReturnType => {\n const subscribersSet = this.channels.get(channel)\n\n if (!subscribersSet) {\n return NON_EXISTENT_CHANNEL as NON_EXISTENT_CHANNEL_TYPE\n }\n\n const iterator = subscribersSet[Symbol.iterator]()\n let subscriberFunc = iterator.next().value\n\n const results = []\n\n // eslint-disable-next-line no-plusplus\n while (subscriberFunc) {\n // eslint-disable-next-line no-await-in-loop\n results.push(subscriberFunc(channel, data as CallbackPayload))\n subscriberFunc = iterator.next().value\n }\n return results?.length === 1 ? results[0] : results\n }\n\n /**\n * Creates a new instance of PeregrineMQ.\n * @param id Specific instance of PeregrineMQ identifier\n * @param config The configuration options for PeregrineMQ.\n */\n constructor(id?: string, config?: Config) {\n this.id = id || (typeof crypto !== 'undefined' && crypto.randomUUID\n ? crypto.randomUUID()\n : `${Date.now()}-${Math.random().toString(36).slice(2)}`)\n this.configure(config || {})\n }\n\n /**\n * Gets the total number of subscribers across all channels.\n */\n get length(): number {\n return [...this.channels.values()].reduce((acc, subscribersList) => acc + subscribersList.size, 0)\n }\n\n /**\n * Configures PeregrineMQ with the specified options.\n * @param config The configuration options for PeregrineMQ.\n * @returns An object containing the prune interval handler (if auto prune is enabled).\n */\n configure = (config: Config): {\n clearPruneInterval?: () => void\n restartPruneInterval?: () => void\n } => {\n this.config = config\n const { allowAutoPrune, pruneInterval } = config\n\n let pruneIntervalHandler: ReturnType<typeof setInterval>\n\n if (allowAutoPrune) {\n pruneIntervalHandler = setInterval(() => {\n this.prune()\n }, pruneInterval)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instance: PeregrineMQ = this\n\n return {\n ...(allowAutoPrune\n ? {\n clearPruneInterval: (): void => {\n clearInterval(pruneIntervalHandler)\n },\n restartPruneInterval: (): void => {\n clearInterval(pruneIntervalHandler)\n pruneIntervalHandler = setInterval(() => {\n instance.prune()\n }, pruneInterval)\n },\n }\n : {}),\n }\n }\n\n /**\n * Gets an array of all channels.\n * @returns An array of channel names.\n */\n getChannels = (): string[] => [...this.channels.keys()]\n\n /**\n * Prunes the channels with no subscribers.\n * @returns An array of pruned channel names.\n */\n prune = (): string[] => {\n const iterator = this.channels[Symbol.iterator]()\n let subscribersSet = iterator.next().value\n const prunedChannels: string[] = []\n\n // eslint-disable-next-line no-plusplus\n while (subscribersSet) {\n if (subscribersSet[1]?.size === 0) {\n prunedChannels.push(subscribersSet[0])\n this.channels.delete(subscribersSet[0])\n }\n subscribersSet = iterator.next().value\n }\n\n return prunedChannels\n }\n\n /**\n * Removes a channel and its subscribers.\n * @param channel The channel to remove.\n * @returns A boolean indicating if the channel was successfully removed.\n */\n removeChannel = (channel: string): boolean => {\n const subscribersSet = this.channels.get(channel)\n\n if (subscribersSet && subscribersSet.size > 0) {\n const channelListeners = [...subscribersSet || []]\n\n subscribersSet.clear()\n\n let index = channelListeners.length\n\n // eslint-disable-next-line no-plusplus\n while (index--) {\n this.removeListener(channelListeners[index])\n }\n }\n\n return this.channels.delete(channel)\n }\n\n /**\n * Publishes data to a channel.\n * @param channel The channel to publish the data to.\n * @param data The data to publish.\n * @returns A boolean indicating if the publication was successful.\n */\n publish = <T>(channel: string, data?: T): PublishReturnType => {\n if (channel.includes('.')) {\n const nestedChannels = channel.split('.')\n\n let { length } = nestedChannels\n let it = 0\n const results = []\n\n // eslint-disable-next-line no-plusplus\n while (length--) {\n // eslint-disable-next-line no-await-in-loop\n const result = this.publishToChannel(\n nestedChannels.slice(0, it + 1).join('.'),\n length !== nestedChannels.length - 1,\n data,\n )\n\n it += 1\n results.push(result)\n }\n return results\n }\n\n return this.publishToChannel(channel, false, data)\n }\n\n /**\n * Subscribes a callback to a channel.\n * @param channel The channel to subscribe to.\n * @param callback The callback function to subscribe.\n * @returns A function to unsubscribe the callback.\n */\n subscribe = (channel: string, callback: Callback): () => boolean => {\n const subscribersList = this.channels.get(channel)\n\n if (subscribersList) {\n subscribersList.add(callback)\n } else {\n this.channels.set(channel, new Set([callback]))\n }\n\n this.addListener(callback, channel)\n\n return () => this.unsubscribe(callback, { channel, prune: true })\n }\n\n /**\n * Unsubscribes a callback from a channel or all channels.\n * @param callback The callback function to unsubscribe.\n * @param options Optional unsubscribe options.\n * @returns A boolean indicating if the callback was successfully unsubscribed.\n */\n unsubscribe = (callback: Callback, options?: UnsubscribeOptions): boolean => {\n const { channel, prune } = options || {}\n\n let unsubscribed = false\n\n if (channel) {\n const subscriberSet = this.channels.get(channel)\n\n unsubscribed = subscriberSet ? subscriberSet.delete(callback) : false\n if (prune && subscriberSet?.size === 0) {\n this.channels.delete(channel)\n }\n\n this.removeListener(callback)\n\n return unsubscribed\n }\n\n const subscriberSetArray = this.listeners.get(callback) || []\n\n // remove callback form listeners and all channels\n // TODO remove only if has\n // eslint-disable-next-line no-restricted-syntax\n for (const subscriberSet of subscriberSetArray) {\n unsubscribed = subscriberSet.delete(callback) as boolean\n\n if (prune && subscriberSet.size === 0) {\n this.prune()\n }\n }\n\n this.listeners.delete(callback)\n\n return unsubscribed\n }\n\n /**\n * Checks if a callback is subscribed to a specific channel or any channel.\n * @param callback The callback function to check.\n * @param channel Optional channel name to check subscription for.\n * @returns A boolean indicating if the callback is subscribed.\n */\n isSubscribed = (callback: Callback, channel?: string): boolean => {\n if (channel) {\n const subscribersList = this.channels.get(channel)\n\n return subscribersList ? subscribersList.has(callback) : false\n }\n\n return this.listeners.has(callback)\n }\n\n /**\n * Clears all channels and listeners.\n * @throws {Error} If clearing PeregrineMQ is not allowed.\n */\n clear = (): void => {\n if (this.config.allowClear) {\n this.channels.clear()\n this.listeners.clear()\n } else {\n throw new PeregrineMQClearError()\n }\n }\n\n /**\n * Returns the specific instance of PeregrineMQ.\n * @returns A string identifier of the specific instance of PeregrineMQ.\n */\n getId = (): string => this.id\n}\n"],"names":["PeregrineMQClearError","PeregrineMQ","id","config","__publicField","callback","channel","listener","subscribersSet","channelSubscriberSets","isEmpty","channelSubscriberSet","isParent","data","NON_EXISTENT_CHANNEL","iterator","subscriberFunc","results","allowAutoPrune","pruneInterval","pruneIntervalHandler","instance","prunedChannels","_a","channelListeners","index","nestedChannels","length","it","result","subscribersList","options","prune","unsubscribed","subscriberSet","subscriberSetArray","acc"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peregrineMQ.types.js","sources":["../../../../src/core/utils/appState/peregrineMQ/peregrineMQ.types.ts"],"sourcesContent":["export type CallbackPayload = string | number | Record<any, any>;\nexport type Callback = (message: string, data?: CallbackPayload) => void;\n\nexport type SubscribersSet = Set<Callback>;\n\nexport interface Config {\n /**\n * If true, enables automatic removal of channels without subscribers.\n */\n allowAutoPrune?: boolean\n\n /**\n * The interval, in milliseconds, for checking channels with no subscribers.\n */\n pruneInterval?: number\n\n /**\n * If true, allows the use of the clear method to remove all channels and listeners.\n */\n allowClear?: boolean\n}\n\nexport interface UnsubscribeOptions {\n /**\n * The channel to unsubscribe from.\n */\n channel?: string\n\n /**\n * If true, removes the channel from the collection when the last subscriber is removed.\n */\n prune?: boolean\n}\n\nexport interface PeregrineMQApi {\n /**\n * Sets the configuration options for a PeregrineMQ instance.\n *\n * @param {Config} config - An object containing configuration options for the instance.\n * @return {void}\n */\n configure: (config: Config) => void\n\n /**\n * Retrieves a list of all channels and their subscribers.\n *\n * @return { string[] }\n */\n getChannels: () => string[]\n\n /**\n * Removes all channels that have no subscribers.\n *\n * @return {void}\n */\n prune: () => void\n\n /**\n * Removes a specified channel from the collection.\n *\n * @param {string} channel - The name of the channel to remove.\n * @return {boolean} - Returns true if the channel was successfully removed, otherwise false.\n */\n removeChannel: (channel: string) => boolean\n\n /**\n * Publishes a message to a specified channel, passing the data to its subscribers.\n *\n * @param {string} channel - The channel to publish the message to.\n * @param {unknown} [data] - The data to pass to subscribers.\n * @return {boolean} - Returns true if the message was successfully published, otherwise false.\n */\n publish: (channel: string, data?: unknown) => PublishReturnType\n\n /**\n * Subscribes a function to a specified channel.\n * The returned unsubscribe function is unique and should be stored for later use.\n *\n * @param {string} channel - The channel name to subscribe to.\n * @param {Callback} callback - The function to call when a new message is published.\n * @return {() => boolean} - The unsubscribe function.\n */\n subscribe: (channel: string, callback: Callback) => () => boolean\n\n /**\n * Unsubscribes a callback from a channel.\n * Returns true if the callback was successfully unsubscribed, otherwise false.\n *\n * @param {Callback} callback - The callback to unsubscribe.\n * @param {UnsubscribeOptions} [options] - Options for unsubscribing, including the channel.\n * @return {boolean} - Returns true if the callback was successfully unsubscribed, otherwise false.\n */\n unsubscribe: (callback: Callback, options?: UnsubscribeOptions) => boolean\n\n /**\n * Checks if a specified callback is subscribed to a specified channel (or any channel if not specified).\n *\n * @param {Callback} callback - The callback to check for subscription.\n * @param {string} [channel] - The channel to check for subscription. If not specified, all channels will be checked.\n * @return {boolean} - Returns true if the callback is subscribed, otherwise false.\n */\n isSubscribed: (callback: Callback, channel?: string) => boolean\n\n /**\n * Removes all channels and subscribers from the collection.\n *\n * @function\n * @alias clear\n */\n clear: () => void\n\n /**\n * Retrieves the identifier for the specific instance of PeregrineMQ.\n *\n * @return {string} - A string identifier for the specific instance.\n */\n getId: () => string\n}\nexport const NON_EXISTENT_CHANNEL = 'NON_EXISTENT_CHANNEL'\n\nexport type NON_EXISTENT_CHANNEL_TYPE = typeof NON_EXISTENT_CHANNEL\n\nexport type PublishToChannelReturnType = NON_EXISTENT_CHANNEL_TYPE\n | undefined | boolean | unknown | Array<undefined | boolean | unknown>\n\nexport type PublishReturnType = PublishToChannelReturnType | PublishToChannelReturnType[]\n"],"names":["NON_EXISTENT_CHANNEL"],"mappings":"gFAsHO,MAAMA,EAAuB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiny-state-machine.base.js","sources":["../../../../src/core/utils/appState/stateMachine/tiny-state-machine.base.ts"],"sourcesContent":["export enum TinyStateMachineEventType {\n CHANGE = 'change',\n TRANSITIONED_TO = 'transitionedTo',\n TRANSITIONED_FROM = 'transitionedFrom',\n ADDED_TO_QUEUE = 'addedToQueue',\n REMOVED_FROM_QUEUE = 'removedFromQueue'\n}\n\nexport type TinyStateMachineListenerCallBack = (\n stateEvent: TinyStateMachineEvent,\n state?: ITinyStateMachineState\n) => void;\n\nexport class TinyStateMachineEvent extends Event {\n constructor(type: TinyStateMachineEventType, eventInitDict?: any) {\n super(type, eventInitDict)\n }\n}\n\ninterface IPubSub {\n subscribe: (listener: TinyStateMachineListenerCallBack) => () => void\n unsubscribe: (listener: TinyStateMachineListenerCallBack) => void\n publish: (...args: any[]) => void\n}\n\nexport interface ITinyStateMachineState extends IPubSub {\n name: string\n}\n\nexport class TinyStateMachineState implements ITinyStateMachineState {\n #name: string\n\n #listeners: Set<TinyStateMachineListenerCallBack>\n\n constructor(name: string) {\n this.#name = name\n this.#listeners = new Set<TinyStateMachineListenerCallBack>()\n }\n\n get name(): string {\n return this.#name\n }\n\n subscribe = (listener: TinyStateMachineListenerCallBack): () => void => {\n this.#listeners.add(listener)\n return () => this.#listeners.delete(listener)\n }\n\n unsubscribe = (listener: TinyStateMachineListenerCallBack): boolean => this.#listeners.delete(listener)\n\n publish = (event: TinyStateMachineEvent): void => {\n if (!this.#listeners?.size) {\n return\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const listener of this.#listeners) {\n listener(event)\n }\n }\n\n toString = (): string => `TinyStateMachineSate: ${this.#name}`\n\n get [Symbol.toStringTag](): string {\n return `TinyStateMachineSate: ${this.#name}`\n }\n}\n\nexport interface ITinyStateMachine extends IPubSub {\n states: Set<TinyStateMachineState>\n addState: (state: TinyStateMachineState) => void\n removeState: (state: TinyStateMachineState) => void\n currentState: undefined | TinyStateMachineState\n gotoState: (state: TinyStateMachineState) => void | boolean\n\n}\n\nexport const createStates = (stateNames: string[]): Set<TinyStateMachineState> => new Set(\n stateNames.map((name: string) => new TinyStateMachineState(name)),\n)\n\nexport class TinyStateMachine implements ITinyStateMachine {\n #states: Set<TinyStateMachineState>\n\n #listeners: Set<TinyStateMachineListenerCallBack>\n\n #currentState: undefined | TinyStateMachineState\n\n constructor(states: Set<TinyStateMachineState>) {\n this.#states = states\n this.#listeners = new Set<TinyStateMachineListenerCallBack>()\n }\n\n addState = (state: TinyStateMachineState): void => {\n this.#states.add(state)\n }\n\n removeState = (state: TinyStateMachineState): void => {\n this.#states.delete(state)\n }\n\n get states (): Set<TinyStateMachineState> {\n return this.#states\n }\n\n get currentState (): undefined | TinyStateMachineState {\n return this.#currentState\n }\n\n subscribe = (listener: TinyStateMachineListenerCallBack): () => void => {\n this.#listeners.add(listener)\n return () => this.#listeners.delete(listener)\n }\n\n unsubscribe = (listener: TinyStateMachineListenerCallBack): void => {\n this.#listeners.delete(listener)\n }\n\n publish = (event: TinyStateMachineEvent, state?: TinyStateMachineState): void => {\n if (!this.#listeners?.size) {\n return\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const listener of this.#listeners) {\n listener(event, state)\n }\n }\n\n #getStateByName = (stateName: string): undefined | TinyStateMachineState => Array\n .from(this.#states).find((state: TinyStateMachineState) => state.name === stateName)\n\n #getStateByState\n = (state: TinyStateMachineState): undefined | TinyStateMachineState => (this.#states.has(state) ? state : undefined)\n\n gotoState = (state: TinyStateMachineState | string): void | boolean => {\n const foundState = typeof state === 'string'\n ? this.#getStateByName(state as string)\n : this.#getStateByState(state as TinyStateMachineState)\n\n if (!foundState) {\n throw Error(`TinyStateMachin::gotoState state not found: ${state}`)\n }\n\n const prevState: undefined | TinyStateMachineState = this.#currentState\n\n this.#currentState = foundState\n this.publish(new TinyStateMachineEvent(TinyStateMachineEventType.TRANSITIONED_FROM), prevState)\n this.publish(new TinyStateMachineEvent(TinyStateMachineEventType.TRANSITIONED_TO), foundState)\n\n prevState?.publish(new TinyStateMachineEvent(TinyStateMachineEventType.TRANSITIONED_FROM))\n this.#currentState.publish(new TinyStateMachineEvent(TinyStateMachineEventType.TRANSITIONED_TO))\n return true\n }\n\n next = (): TinyStateMachineState | null => {\n let nextState: TinyStateMachineState\n const arrayOfStates: TinyStateMachineState[] = Array.from(this.#states)\n\n if (!this.#currentState) {\n [nextState] = arrayOfStates\n\n return this.gotoState(nextState) ? nextState : null\n }\n\n const currentStateIndex = arrayOfStates\n .findIndex((state: TinyStateMachineState) => state === this.#currentState)\n\n if (currentStateIndex < this.#states.size - 2) {\n nextState = arrayOfStates[currentStateIndex + 1]\n return this.gotoState(nextState) ? nextState : null\n }\n\n return null\n }\n}\n\n\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const stateIterator = function* () {\n let operation: string\n let state: string = stateIterator.IS_RUNNING\n\n while (true) {\n // console.log('inside while loop')\n\n // // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // // @ts-ignore\n\n\n // // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // // @ts-ignore\n operation = yield state\n\n // // console.log('operation', operation)\n // // console.log('state', state)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (operation === stateIterator.DO_END) {\n state = stateIterator.IS_FINITE\n yield state\n break\n }\n }\n yield* [1, 2, 3]\n yield 123\n\n return 10\n}\n\nstateIterator.DO_END = '__DO__END__'\nstateIterator.IS_FINITE = '__IS__FINITE__'\nstateIterator.IS_RUNNING = '__IS__RUNNING__'\n"],"names":["TinyStateMachineEventType","TinyStateMachineEvent","type","eventInitDict","TinyStateMachineState","name","__privateAdd","_name","_listeners","__publicField","listener","__privateGet","event","_a","__privateSet","createStates","stateNames","TinyStateMachine","states","_states","_currentState","state","_getStateByName","stateName","_getStateByState","foundState","prevState","nextState","arrayOfStates","currentStateIndex","stateIterator","operation"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.vanillajs.js","sources":["../../../../src/core/utils/appState/store/store.vanillajs.ts"],"sourcesContent":["\n// TinyStore, inspired by https://github.com/jherr/syncexternalstore/blob/main/csr/src/store.js\n\nimport { isFunctionAsync } from '../../helpers'\n\n\nlet SET_STATE_MERGE: boolean = true\n\n\nexport const canSetStateMerge = (value: boolean): void => {\n SET_STATE_MERGE = !!value\n}\n\nexport const getSetStateMerge = (): boolean => SET_STATE_MERGE\n\n/**\n * Represents the callback function for a store listener.\n */\nexport type ListenerCallBack<T> = (state: Partial<T>) => void\n\n/**\n * Represents a selector function that transforms the store state.\n */\n// export type Selector<T> = (state: Partial<T>) => Partial<T>;\nexport type SelectedValueType<T> = Partial<T> | Partial<keyof T>\n| string | number | boolean | undefined | string[] | number[] | boolean[] | undefined[];\nexport type Selector<T> = (state: Partial<T>) => SelectedValueType<T>;\n\n\n/**\n * Represents an equality function for comparing selected values.\n */\nexport type EqualityFn<T> = (a: SelectedValueType<T>, b: SelectedValueType<T>) => boolean\n\n\n/**\n * Shallow equality check for selector results.\n * Handles primitives (===), null/undefined, arrays (element-wise ===), and plain objects (own-key ===).\n */\nexport const shallowEqual = <T>(a: SelectedValueType<T>, b: SelectedValueType<T>): boolean => {\n if (Object.is(a, b)) { return true }\n if (typeof a !== 'object' || typeof b !== 'object' || a == null || b == null) { return false }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) { return false }\n return a.every((val, i) => Object.is(val, (b as unknown[])[i]))\n }\n\n const keysA = Object.keys(a as object)\n const keysB = Object.keys(b as object)\n\n if (keysA.length !== keysB.length) { return false }\n return keysA.every(\n (key) => Object.is(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n ),\n )\n}\n\n/**\n * Represents a listener for the store.\n */\nexport type Listener<T> = {\n selector?: Selector<T>\n previousValue?: SelectedValueType<T>\n equalityFn?: EqualityFn<T>\n} & ListenerCallBack<T>\n\n/**\n * Represents a store.\n */\nexport type Store<T> = {\n /**\n * Get the current state of the store.\n * @returns The current state of the store.\n */\n getState: () => Partial<T>\n /**\n * Set the state of the store.\n * @param state - The new state to set.\n * @returns A promise that resolves to the new state.\n */\n setState: (state: Partial<T>) => Promise<Partial<T>>\n /**\n * Subscribe a listener to the store.\n * @param listener - The listener function to be subscribed.\n * @param selector - Optional selector function to transform the store state.\n * @returns A function to unsubscribe the listener.\n */\n subscribe: (listener: Listener<T>, selector?: Selector<T>, equalityFn?: EqualityFn<T>) => () => void\n /**\n * Unubscribe a listener from the store.\n * @param listener - The listener function to be unsubscribed.\n */\n unsubscribe: (listener: Listener<T>) => void\n}\n// & { actions?: { [actionName: string]: ActionHandlerCaller } }\n\n// TODO infer actionNames from createStore arguments\n/**\n * Represents a store with additional actions.\n */\nexport type StoreWithActions<T> = Store<T> & { actions: { [actionName: string]: ActionHandlerCaller<T> } }\n\n\n\n\n/**\n * Represents an action handler function.\n */\nexport type ActionHandler<T> = (\n getState: Store<T>['getState'], // Function to get the current state of the store\n setState: Store<T>['setState'], // Function to set the state of the store\n ...rest: unknown[]\n) => void | Partial<T> | Promise<void | Partial<T>>\n\n/**\n * Represents an reducer function.\n */\nexport type Reducer<T> = (\n state: Partial<T>,\n action: string,\n ...rest: unknown[]\n) => Partial<T>\n\n\n/**\n * Represents a function that calls an action handler.\n */\nexport type ActionHandlerCaller<T> = (...args: unknown[]) => void | Partial<T> | Promise<void | Partial<T>>\n\n\ntype Actions<T> = { [key: string]: ActionHandler<T>}\n/**\n * Creates a new store.\n * @param initialState - The initial state of the store.\n * @param actions - Optional actions for the store.\n * @returns The created store.\n */\nexport const createStore = <T>(\n initialState: Partial<T>,\n actions?: Actions<T>,\n reducer?: Reducer<T>,\n): Store<T> | StoreWithActions<T> => {\n let currentState: Partial<T> = initialState\n const listeners = new Set<Listener<T>>()\n\n /**\n * Gets the current state of the store.\n * @returns The current state of the store.\n */\n const getState = (): Partial<T> => currentState\n\n // TODO debounce, batch? what is the meaningful time between setState ofr UI to be rendered and registerd by User?\n /**\n * Sets the state of the store.\n * @param newState - The new state to set.\n * @returns A promise that resolves to the new state.\n */\n const setState = async (newState: Partial<T>): Promise<Partial<T>> => {\n currentState = SET_STATE_MERGE ? { ...getState(), ...newState } : newState\n\n const errors: unknown[] = []\n\n // eslint-disable-next-line no-restricted-syntax\n for (const listener of listeners) {\n try {\n // has Listener selector?\n const selector: Selector<T> | undefined = listener?.selector\n const newValue: SelectedValueType<T> = selector ? selector(currentState) : currentState\n\n const effectiveEqualityFn = listener.equalityFn ?? (selector ? shallowEqual : undefined)\n const isEqual = effectiveEqualityFn\n ? effectiveEqualityFn(listener.previousValue as SelectedValueType<T>, newValue)\n : listener.previousValue !== undefined && listener.previousValue === newValue\n\n if (!isEqual) {\n listener.previousValue = newValue\n // eslint-disable-next-line no-await-in-loop\n await listener(newValue as Partial<T>)\n }\n } catch (error) {\n errors.push(error)\n }\n }\n\n if (errors.length > 0) {\n throw errors[0]\n }\n\n return currentState\n }\n\n /**\n * Represents the basic API of the store.\n */\n const storeBaseicApi: Store<T> = {\n /**\n * Get the current state of the store.\n * @returns The current state of the store.\n */\n getState,\n /**\n * Set the state of the store.\n * @param state - The new state to set.\n * @returns A promise that resolves to the new state.\n */\n setState,\n /**\n * Subscribe a listener to the store.\n * @param listener - The listener function to be subscribed.\n * @returns A function to unsubscribe the listener.\n */\n subscribe: (listener: Listener<T>, selector?: Selector<T>, equalityFn?: EqualityFn<T>) => {\n if (selector && listener.selector && listener.selector !== selector) {\n throw new Error('Error, mismatch selector, listener.selector !== selector.')\n }\n if (selector && !listener.selector) {\n // eslint-disable-next-line no-param-reassign\n listener.selector = selector\n }\n if (equalityFn && !listener.equalityFn) {\n // eslint-disable-next-line no-param-reassign\n listener.equalityFn = equalityFn\n }\n\n if (listener.selector) {\n // setting the previousValue for the next cache/equality check\n // eslint-disable-next-line no-param-reassign\n listener.previousValue = listener.selector(getState())\n }\n\n listeners.add(listener)\n return () => listeners.delete(listener)\n },\n /**\n * Unsubscribe a listener from the store.\n * @param listener - The listener function to be unsubscribed.\n */\n unsubscribe: (listener: Listener<T>) => {\n listeners.delete(listener)\n },\n }\n\n /**\n * Resolves the actions and creates action handlers.\n */\n const resolvedActions: Actions<T> | null | undefined\n = actions ? Object.entries(actions)?.reduce(\n (\n aggregator: Record<string, ActionHandlerCaller<T>>,\n [actionName, actionHandler]: [string, ActionHandler<T>],\n ) => {\n // eslint-disable-next-line no-param-reassign\n aggregator[actionName] = async(...rest: unknown[]): Promise<void | Partial<T>> => {\n // TODO try to not call subscriber too many times becuase of Error and Pending values\n const isAsync = isFunctionAsync(actionHandler as () => unknown)\n\n if (isAsync) {\n setState({\n ...getState(),\n [`${actionName}Error`]: null,\n [`${actionName}Pending`]: true,\n })\n }\n\n try {\n const resultOfAction = await actionHandler(getState, setState, ...rest)\n\n // TODO try to mutate state only once with the results, that means pass custom setState to action,\n // so that it would matk pending and error already inside action\n if (reducer) {\n setState(reducer(getState(), actionName, ...rest))\n }\n\n if (isAsync) {\n setState({ ...getState(), [`${actionName}Pending`]: false })\n }\n\n return resultOfAction\n } catch (error) {\n if (isAsync) {\n setState({\n ...getState(),\n [`${actionName}Pending`]: false,\n [`${actionName}Error`]: error,\n })\n }\n throw error\n }\n }\n\n return aggregator\n },\n {},\n ) : null\n\n /**\n * Represents the store combined with actions.\n */\n const storeCombinedWithActions = {\n ...storeBaseicApi,\n ...(resolvedActions ? { actions: { ...resolvedActions } } : {}),\n }\n\n return resolvedActions\n ? storeCombinedWithActions as StoreWithActions<T>\n // ? storeCombinedWithActions as StoreWithActions<T> & ActionsStateReturnType<A>\n : storeCombinedWithActions as Store<T>\n}\n"],"names":["SET_STATE_MERGE","canSetStateMerge","value","getSetStateMerge","shallowEqual","a","b","val","i","keysA","keysB","key","createStore","initialState","actions","reducer","currentState","listeners","getState","setState","newState","errors","listener","selector","newValue","effectiveEqualityFn","error","storeBaseicApi","equalityFn","resolvedActions","_a","aggregator","actionName","actionHandler","rest","isAsync","isFunctionAsync","resultOfAction","storeCombinedWithActions"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.vanillajs.templates.js","sources":["../../../../src/core/utils/appState/store/store.vanillajs.templates.ts"],"sourcesContent":["import { ActionHandler, Reducer, Store, StoreWithActions, createStore } from './store.vanillajs'\n\n\ntype DefaultES = { [key: string]: any }\n\n\nexport type DataState<T, ES = DefaultES> = {\n dataId: string\n isLoading: boolean\n error?: unknown\n data?: T\n} & ES\n\n\ntype Load<T, ES = DefaultES> = (\n getState: Store<DataState<T, ES>>['getState'],\n setState: Store<DataState<T, ES>>['setState'],\n dataPromise: unknown | Promise<unknown>,\n) => Promise<Partial<DataState<T, ES>>>\n\n\ntype LoadHandler<T, ES = DefaultES> = (\n dataPromise: unknown | Promise<unknown>,\n) => Promise<Partial<DataState<T, ES>>>\n\n/**\n * Creates a data store with actions.\n * @param dataId - The ID of the data.\n * @param actions - Optional actions for the data store.\n * @returns The created data store with actions.\n */\nexport const createDataStore\n= <T, ES = DefaultES>(\n dataId: string,\n initialState?: Partial<ES>,\n actions?: Record<string, ActionHandler<DataState<T, ES>>>,\n reducer?: Reducer<DataState<T, ES>>,\n): StoreWithActions<DataState<T, ES>>\n& { actions: { load: LoadHandler<T, ES> } } => {\n const loadActions: { load: Load<T, ES> } = {\n ...actions,\n /**\n * Loads data into the data store.\n * @param getState - Function to get the current state of the data store.\n * @param setState - Function to set the state of the data store.\n * @param dataPromise - The data promise to be loaded.\n * @returns A promise that resolves to the updated state of the data store.\n */\n load: async (\n getState: Store<DataState<T, ES>>['getState'],\n setState: Store<DataState<T, ES>>['setState'],\n dataPromise: unknown | Promise<unknown>,\n ) => {\n const dataState: Partial<DataState<T, ES>> = getState()\n\n setState({ ...dataState, isLoading: true })\n\n try {\n const response: unknown = await dataPromise\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n dataState.data = response?.data || response\n } catch (error: unknown) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n dataState.error = error\n }\n return setState({ ...dataState, isLoading: false })\n },\n }\n\n return (createStore<DataState<T, ES>>({\n ...initialState,\n dataId,\n isLoading: false,\n } as Partial<DataState<T, ES>>, loadActions, reducer)) as StoreWithActions<DataState<T, ES>>\n & { actions: { load: LoadHandler<T, ES> } }\n}\n"],"names":["createDataStore","dataId","initialState","actions","reducer","loadActions","getState","setState","dataPromise","dataState","response","error","createStore"],"mappings":"wHA+BaA,EACX,CACAC,EACAC,EACAC,EACAC,IAE6C,CAC7C,MAAMC,EAAqC,CACzC,GAAGF,EAQH,KAAM,MACJG,EACAC,EACAC,IACG,CACH,MAAMC,EAAuCH,EAAA,EAE7CC,EAAS,CAAE,GAAGE,EAAW,UAAW,GAAM,EAE1C,GAAI,CACF,MAAMC,EAAoB,MAAMF,EAIhCC,EAAU,MAAOC,GAAA,YAAAA,EAAU,OAAQA,CACrC,OAASC,EAAgB,CAGvBF,EAAU,MAAQE,CACpB,CACA,OAAOJ,EAAS,CAAE,GAAGE,EAAW,UAAW,GAAO,CACpD,CAAA,EAGF,OAAQG,cAA8B,CACpC,GAAGV,EACH,OAAAD,EACA,UAAW,EAAA,EACmBI,EAAaD,CAAO,CAEtD"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=t=>t[0],e=t=>t[t.length-1];exports.ArrayFirst=r;exports.ArrayLast=e;
2
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sources":["../../src/core/utils/array.ts"],"sourcesContent":["export const ArrayFirst = <T>(arr: T[]): T | undefined => arr[0]\nexport const ArrayLast = <T>(arr: T[]): T | undefined => arr[arr.length - 1]\n"],"names":["ArrayFirst","arr","ArrayLast"],"mappings":"gFAAO,MAAMA,EAAiBC,GAA4BA,EAAI,CAAC,EAClDC,EAAgBD,GAA4BA,EAAIA,EAAI,OAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("dayjs"),v=require("dayjs/plugin/relativeTime"),w=require("dayjs/plugin/updateLocale"),g=require("dayjs/plugin/customParseFormat"),n=e=>e&&e.__esModule?e:{default:e},t=n(p),_=n(v),N=n(w),L=n(g),j={thresholds:[{l:"s",r:1},{l:"m",r:1},{l:"mm",r:59,d:"minute"},{l:"h",r:1},{l:"hh",r:23,d:"hour"},{l:"d",r:1},{l:"dd",r:29,d:"day"},{l:"M",r:1},{l:"MM",r:11,d:"month"},{l:"y",r:1},{l:"yy",d:"year"}]},f={future:"in %s",past:"%s ago",s:"now",m:"now",mm:"now",h:"1 hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},c={future:"za %s",past:"%s před",s:"nyní",m:"nyní",mm:"nyní",h:"1 hodinu",hh:"%d hodiny",d:"den",dd:"%d dny",M:"měsíc",MM:"%d měsíci",y:"rok",yy:"%d roky"};let M=!1;function y(){M||(M=!0,t.default.extend(L.default),t.default.extend(_.default,j),t.default.extend(N.default),t.default.updateLocale("cz",{relativeTime:{...c}}),t.default.updateLocale("en",{relativeTime:{...f}}))}const z=(e,d)=>(y(),t.default.updateLocale("en",{relativeTime:{...d==="cz"?c:f,..._.default}}),t.default(e,void 0).fromNow(!0)),D=(e,d)=>T({...d,from:!0,value:e}),F=(e,d)=>T({...d,to:!0,value:e}),T=({value:e,valueFormat:d,formatString:i,language:a="en",relativeTime:s,from:r,to:o,shouldAddDay:l=!1,shouldSubtractDay:u=!1,showPreffix:h=!1})=>{if(y(),t.default.updateLocale("en",{relativeTime:{...a==="cz"?c:f,...s}}),t.default.locale(a),!r&&o){const m=t.default(e,d||void 0).add(l?1:0,"day");return t.default(new Date).locale(a).to(m,!h)}if(r&&!o){const m=t.default(e,d||void 0).subtract(u?1:0,"day");return t.default(m,d||void 0).locale(a).fromNow(!h)}return t.default(e,d||void 0).locale(a).format(i)},q=(e,d,i,a,s=" - ",r="month")=>{y();const o=t.default(e),l=t.default(d),u=o.diff(l,r);return`${o.format(u===0?i:a)}${s}${l.format(a)}`};exports.dateRangeFormat=q;exports.getDateTime=T;exports.getTimeFromNow=D;exports.getTimeFromNowOriginal=z;exports.getTimeTo=F;
2
+ //# sourceMappingURL=date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.js","sources":["../../src/core/utils/date.ts"],"sourcesContent":["import dayjs, { UnitType } from 'dayjs'\nimport relativeTime from 'dayjs/plugin/relativeTime'\nimport updateLocale from 'dayjs/plugin/updateLocale'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\nexport type DateTimeFormat = {\n value: Date | string | number\n valueFormat?: string\n formatString?: string\n language?: string\n relativeTime?: Record<string, string>\n from?: boolean\n to?: boolean\n shouldSubtractDay?: boolean\n shouldAddDay?: boolean\n showPreffix?: boolean\n}\n\nconst relativeTimeConfig = {\n thresholds: [\n { l: 's', r: 1 },\n { l: 'm', r: 1 },\n { l: 'mm', r: 59, d: 'minute' },\n { l: 'h', r: 1 },\n { l: 'hh', r: 23, d: 'hour' },\n { l: 'd', r: 1 },\n { l: 'dd', r: 29, d: 'day' },\n { l: 'M', r: 1 },\n { l: 'MM', r: 11, d: 'month' },\n { l: 'y', r: 1 },\n { l: 'yy', d: 'year' },\n ],\n}\n\nconst relativeTimeEN = {\n future: 'in %s',\n past: '%s ago',\n s: 'now',\n m: 'now',\n mm: 'now',\n h: '1 hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days', // probably 'a week' instead?\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n}\n\nconst relativeTimeCZ = {\n future: 'za %s',\n past: '%s před',\n s: 'nyní',\n m: 'nyní',\n mm: 'nyní',\n h: '1 hodinu',\n hh: '%d hodiny',\n d: 'den',\n dd: '%d dny',\n M: 'měsíc',\n MM: '%d měsíci',\n y: 'rok',\n yy: '%d roky',\n}\n\nlet _dayjsInitialized = false\nfunction initDayjs() {\n if (_dayjsInitialized) return\n _dayjsInitialized = true\n dayjs.extend(customParseFormat)\n dayjs.extend(relativeTime, relativeTimeConfig)\n dayjs.extend(updateLocale)\n dayjs.updateLocale('cz', {\n relativeTime: { ...relativeTimeCZ },\n })\n dayjs.updateLocale('en', {\n relativeTime: { ...relativeTimeEN },\n })\n}\n\nexport const getTimeFromNowOriginal = (value: string, language: string): string => {\n initDayjs()\n dayjs.updateLocale('en', {\n relativeTime: {\n ...(language === 'cz' ? relativeTimeCZ : relativeTimeEN),\n ...relativeTime,\n },\n })\n return dayjs(value, undefined).fromNow(true)\n}\n\nexport const getTimeFromNow = (\n value: Date | string | number,\n valueFormat?: Partial<DateTimeFormat>,\n): string => getDateTime({ ...valueFormat, from: true, value })\n\nexport const getTimeTo = (\n value: Date | string | number,\n valueFormat?: Partial<DateTimeFormat>,\n): string => getDateTime({ ...valueFormat, to: true, value })\n\nexport const getDateTime = ({\n value,\n valueFormat,\n formatString,\n language = 'en',\n relativeTime,\n from,\n to,\n shouldAddDay = false,\n shouldSubtractDay = false,\n showPreffix = false,\n}: DateTimeFormat): string => {\n initDayjs()\n dayjs.updateLocale('en', {\n relativeTime: {\n ...(language === 'cz' ? relativeTimeCZ : relativeTimeEN),\n ...relativeTime,\n },\n })\n\n dayjs.locale(language)\n\n if (!from && to) {\n const dateTo = dayjs(value, valueFormat || undefined).add(shouldAddDay ? 1 : 0, 'day')\n\n return dayjs(new Date()).locale(language).to(dateTo, !showPreffix)\n }\n\n if (from && !to) {\n const dateTo = dayjs(value, valueFormat || undefined).subtract(shouldSubtractDay ? 1 : 0, 'day')\n\n return dayjs(dateTo, valueFormat || undefined).locale(language).fromNow(!showPreffix)\n }\n\n return dayjs(value, valueFormat || undefined).locale(language).format(formatString)\n}\n\nexport const dateRangeFormat = (\n dateFrom: Date, dateTo: Date, shortFormat: string, longFormat: string,\n delimiter = ' - ', datePeriod: UnitType = 'month',\n) : string => {\n initDayjs()\n const dayJSFrom = dayjs(dateFrom)\n const dayJSTo = dayjs(dateTo)\n\n const diffMonths = dayJSFrom.diff(dayJSTo, datePeriod)\n\n return `${dayJSFrom.format(diffMonths === 0 ? shortFormat : longFormat)}${delimiter}${dayJSTo.format(longFormat)}`\n}\n"],"names":["relativeTimeConfig","relativeTimeEN","relativeTimeCZ","_dayjsInitialized","initDayjs","dayjs","customParseFormat","relativeTime","updateLocale","getTimeFromNowOriginal","value","language","getTimeFromNow","valueFormat","getDateTime","getTimeTo","formatString","from","to","shouldAddDay","shouldSubtractDay","showPreffix","dateTo","dateRangeFormat","dateFrom","shortFormat","longFormat","delimiter","datePeriod","dayJSFrom","dayJSTo","diffMonths"],"mappings":"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"}
@@ -1,14 +1,13 @@
1
- var o = Object.defineProperty;
2
- var a = (u, e, s) => e in u ? o(u, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : u[e] = s;
3
- var n = (u, e, s) => a(u, typeof e != "symbol" ? e + "" : e, s);
1
+ var u = Object.defineProperty;
2
+ var a = (o, e, s) => e in o ? u(o, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : o[e] = s;
3
+ var n = (o, e, s) => a(o, typeof e != "symbol" ? e + "" : e, s);
4
4
  import { NON_EXISTENT_CHANNEL as c } from "./peregrineMQ.types.js";
5
- import f from "../../../../../node_modules/uuid/dist/esm-browser/v4.js";
6
- class d extends Error {
5
+ class f extends Error {
7
6
  constructor() {
8
7
  super("Clearing PeregrineMQ is not allowed. Please read the documentation for more information."), this.name = "PeregrineMQClearError";
9
8
  }
10
9
  }
11
- class v {
10
+ class g {
12
11
  /**
13
12
  * Creates a new instance of PeregrineMQ.
14
13
  * @param id Specific instance of PeregrineMQ identifier
@@ -202,14 +201,14 @@ class v {
202
201
  if (this.config.allowClear)
203
202
  this.channels.clear(), this.listeners.clear();
204
203
  else
205
- throw new d();
204
+ throw new f();
206
205
  });
207
206
  /**
208
207
  * Returns the specific instance of PeregrineMQ.
209
208
  * @returns A string identifier of the specific instance of PeregrineMQ.
210
209
  */
211
210
  n(this, "getId", () => this.id);
212
- this.id = e || f(), this.configure(s || {});
211
+ this.id = e || (typeof crypto < "u" && crypto.randomUUID ? crypto.randomUUID() : `${Date.now()}-${Math.random().toString(36).slice(2)}`), this.configure(s || {});
213
212
  }
214
213
  /**
215
214
  * Gets the total number of subscribers across all channels.
@@ -219,7 +218,7 @@ class v {
219
218
  }
220
219
  }
221
220
  export {
222
- v as PeregrineMQ,
223
- d as PeregrineMQClearError
221
+ g as PeregrineMQ,
222
+ f as PeregrineMQClearError
224
223
  };
225
224
  //# sourceMappingURL=peregrineMQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peregrineMQ.js","sources":["../../../../../src/core/utils/appState/peregrineMQ/peregrineMQ.ts"],"sourcesContent":["import {\n Callback, Config, PeregrineMQApi, PublishToChannelReturnType,\n PublishReturnType, SubscribersSet,\n UnsubscribeOptions, NON_EXISTENT_CHANNEL_TYPE,\n NON_EXISTENT_CHANNEL,\n CallbackPayload,\n} from './peregrineMQ.types'\n\n\nexport class PeregrineMQClearError extends Error {\n constructor() {\n super('Clearing PeregrineMQ is not allowed. Please read the documentation for more information.')\n this.name = 'PeregrineMQClearError'\n }\n}\n\n/**\n * Represents a message queue with publish/subscribe functionality.\n */\nexport class PeregrineMQ implements PeregrineMQApi {\n private id: string\n\n private config: Config = {\n allowAutoPrune: false,\n pruneInterval: 10000,\n allowClear: false,\n }\n\n /**\n * The map of channels and their subscribers sets.\n */\n private channels: Map<string, SubscribersSet> = new Map()\n\n /**\n * The map of listeners and their subscribed channels.\n */\n private listeners: Map<Callback, SubscribersSet[]> = new Map()\n\n /**\n * Adds a callback as a listener to a channel.\n * @param callback The callback function to add as a listener.\n * @param channel The channel to add the listener to.\n */\n private addListener = (callback: Callback, channel: string): void => {\n const listener = this.listeners.get(callback)\n const subscribersSet = this.channels.get(channel)\n\n if (subscribersSet) {\n if (listener) {\n listener.push(subscribersSet)\n } else {\n this.listeners.set(callback, [subscribersSet])\n }\n }\n }\n\n /**\n * Removes the callback from the listeners collection if it is not subscribed to any channels.\n * @description Removes the callback only when it is not present in any other subscriberSet\n * (Ref to Map<string, SubscribersSet>).\n * @param callback The callback to remove from listeners.\n */\n private removeListener = (callback: Callback): void => {\n const channelSubscriberSets = this.listeners.get(callback)\n let isEmpty = true\n\n // eslint-disable-next-line no-restricted-syntax\n for (const channelSubscriberSet of channelSubscriberSets || []) {\n isEmpty = !channelSubscriberSet.has(callback)\n if (!isEmpty) {\n break\n }\n }\n\n if (isEmpty) {\n this.listeners.delete(callback)\n }\n }\n\n /**\n * Publishes data to a channel.\n * @param channel The channel to publish the data to.\n * @param isParent Indicates if the channel is a parent channel.\n * @param data The data to publish.\n * @returns A boolean indicating if the publication was successful.\n */\n private publishToChannel = (\n channel: string, isParent: boolean, data?: unknown,\n ): PublishToChannelReturnType => {\n const subscribersSet = this.channels.get(channel)\n\n if (!subscribersSet) {\n return NON_EXISTENT_CHANNEL as NON_EXISTENT_CHANNEL_TYPE\n }\n\n const iterator = subscribersSet[Symbol.iterator]()\n let subscriberFunc = iterator.next().value\n\n const results = []\n\n // eslint-disable-next-line no-plusplus\n while (subscriberFunc) {\n // eslint-disable-next-line no-await-in-loop\n results.push(subscriberFunc(channel, data as CallbackPayload))\n subscriberFunc = iterator.next().value\n }\n return results?.length === 1 ? results[0] : results\n }\n\n /**\n * Creates a new instance of PeregrineMQ.\n * @param id Specific instance of PeregrineMQ identifier\n * @param config The configuration options for PeregrineMQ.\n */\n constructor(id?: string, config?: Config) {\n this.id = id || (typeof crypto !== 'undefined' && crypto.randomUUID\n ? crypto.randomUUID()\n : `${Date.now()}-${Math.random().toString(36).slice(2)}`)\n this.configure(config || {})\n }\n\n /**\n * Gets the total number of subscribers across all channels.\n */\n get length(): number {\n return [...this.channels.values()].reduce((acc, subscribersList) => acc + subscribersList.size, 0)\n }\n\n /**\n * Configures PeregrineMQ with the specified options.\n * @param config The configuration options for PeregrineMQ.\n * @returns An object containing the prune interval handler (if auto prune is enabled).\n */\n configure = (config: Config): {\n clearPruneInterval?: () => void\n restartPruneInterval?: () => void\n } => {\n this.config = config\n const { allowAutoPrune, pruneInterval } = config\n\n let pruneIntervalHandler: ReturnType<typeof setInterval>\n\n if (allowAutoPrune) {\n pruneIntervalHandler = setInterval(() => {\n this.prune()\n }, pruneInterval)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const instance: PeregrineMQ = this\n\n return {\n ...(allowAutoPrune\n ? {\n clearPruneInterval: (): void => {\n clearInterval(pruneIntervalHandler)\n },\n restartPruneInterval: (): void => {\n clearInterval(pruneIntervalHandler)\n pruneIntervalHandler = setInterval(() => {\n instance.prune()\n }, pruneInterval)\n },\n }\n : {}),\n }\n }\n\n /**\n * Gets an array of all channels.\n * @returns An array of channel names.\n */\n getChannels = (): string[] => [...this.channels.keys()]\n\n /**\n * Prunes the channels with no subscribers.\n * @returns An array of pruned channel names.\n */\n prune = (): string[] => {\n const iterator = this.channels[Symbol.iterator]()\n let subscribersSet = iterator.next().value\n const prunedChannels: string[] = []\n\n // eslint-disable-next-line no-plusplus\n while (subscribersSet) {\n if (subscribersSet[1]?.size === 0) {\n prunedChannels.push(subscribersSet[0])\n this.channels.delete(subscribersSet[0])\n }\n subscribersSet = iterator.next().value\n }\n\n return prunedChannels\n }\n\n /**\n * Removes a channel and its subscribers.\n * @param channel The channel to remove.\n * @returns A boolean indicating if the channel was successfully removed.\n */\n removeChannel = (channel: string): boolean => {\n const subscribersSet = this.channels.get(channel)\n\n if (subscribersSet && subscribersSet.size > 0) {\n const channelListeners = [...subscribersSet || []]\n\n subscribersSet.clear()\n\n let index = channelListeners.length\n\n // eslint-disable-next-line no-plusplus\n while (index--) {\n this.removeListener(channelListeners[index])\n }\n }\n\n return this.channels.delete(channel)\n }\n\n /**\n * Publishes data to a channel.\n * @param channel The channel to publish the data to.\n * @param data The data to publish.\n * @returns A boolean indicating if the publication was successful.\n */\n publish = <T>(channel: string, data?: T): PublishReturnType => {\n if (channel.includes('.')) {\n const nestedChannels = channel.split('.')\n\n let { length } = nestedChannels\n let it = 0\n const results = []\n\n // eslint-disable-next-line no-plusplus\n while (length--) {\n // eslint-disable-next-line no-await-in-loop\n const result = this.publishToChannel(\n nestedChannels.slice(0, it + 1).join('.'),\n length !== nestedChannels.length - 1,\n data,\n )\n\n it += 1\n results.push(result)\n }\n return results\n }\n\n return this.publishToChannel(channel, false, data)\n }\n\n /**\n * Subscribes a callback to a channel.\n * @param channel The channel to subscribe to.\n * @param callback The callback function to subscribe.\n * @returns A function to unsubscribe the callback.\n */\n subscribe = (channel: string, callback: Callback): () => boolean => {\n const subscribersList = this.channels.get(channel)\n\n if (subscribersList) {\n subscribersList.add(callback)\n } else {\n this.channels.set(channel, new Set([callback]))\n }\n\n this.addListener(callback, channel)\n\n return () => this.unsubscribe(callback, { channel, prune: true })\n }\n\n /**\n * Unsubscribes a callback from a channel or all channels.\n * @param callback The callback function to unsubscribe.\n * @param options Optional unsubscribe options.\n * @returns A boolean indicating if the callback was successfully unsubscribed.\n */\n unsubscribe = (callback: Callback, options?: UnsubscribeOptions): boolean => {\n const { channel, prune } = options || {}\n\n let unsubscribed = false\n\n if (channel) {\n const subscriberSet = this.channels.get(channel)\n\n unsubscribed = subscriberSet ? subscriberSet.delete(callback) : false\n if (prune && subscriberSet?.size === 0) {\n this.channels.delete(channel)\n }\n\n this.removeListener(callback)\n\n return unsubscribed\n }\n\n const subscriberSetArray = this.listeners.get(callback) || []\n\n // remove callback form listeners and all channels\n // TODO remove only if has\n // eslint-disable-next-line no-restricted-syntax\n for (const subscriberSet of subscriberSetArray) {\n unsubscribed = subscriberSet.delete(callback) as boolean\n\n if (prune && subscriberSet.size === 0) {\n this.prune()\n }\n }\n\n this.listeners.delete(callback)\n\n return unsubscribed\n }\n\n /**\n * Checks if a callback is subscribed to a specific channel or any channel.\n * @param callback The callback function to check.\n * @param channel Optional channel name to check subscription for.\n * @returns A boolean indicating if the callback is subscribed.\n */\n isSubscribed = (callback: Callback, channel?: string): boolean => {\n if (channel) {\n const subscribersList = this.channels.get(channel)\n\n return subscribersList ? subscribersList.has(callback) : false\n }\n\n return this.listeners.has(callback)\n }\n\n /**\n * Clears all channels and listeners.\n * @throws {Error} If clearing PeregrineMQ is not allowed.\n */\n clear = (): void => {\n if (this.config.allowClear) {\n this.channels.clear()\n this.listeners.clear()\n } else {\n throw new PeregrineMQClearError()\n }\n }\n\n /**\n * Returns the specific instance of PeregrineMQ.\n * @returns A string identifier of the specific instance of PeregrineMQ.\n */\n getId = (): string => this.id\n}\n"],"names":["PeregrineMQClearError","PeregrineMQ","id","config","__publicField","callback","channel","listener","subscribersSet","channelSubscriberSets","isEmpty","channelSubscriberSet","isParent","data","NON_EXISTENT_CHANNEL","iterator","subscriberFunc","results","allowAutoPrune","pruneInterval","pruneIntervalHandler","instance","prunedChannels","_a","channelListeners","index","nestedChannels","length","it","result","subscribersList","options","prune","unsubscribed","subscriberSet","subscriberSetArray","acc"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peregrineMQ.types.js","sources":["../../../../../src/core/utils/appState/peregrineMQ/peregrineMQ.types.ts"],"sourcesContent":["export type CallbackPayload = string | number | Record<any, any>;\nexport type Callback = (message: string, data?: CallbackPayload) => void;\n\nexport type SubscribersSet = Set<Callback>;\n\nexport interface Config {\n /**\n * If true, enables automatic removal of channels without subscribers.\n */\n allowAutoPrune?: boolean\n\n /**\n * The interval, in milliseconds, for checking channels with no subscribers.\n */\n pruneInterval?: number\n\n /**\n * If true, allows the use of the clear method to remove all channels and listeners.\n */\n allowClear?: boolean\n}\n\nexport interface UnsubscribeOptions {\n /**\n * The channel to unsubscribe from.\n */\n channel?: string\n\n /**\n * If true, removes the channel from the collection when the last subscriber is removed.\n */\n prune?: boolean\n}\n\nexport interface PeregrineMQApi {\n /**\n * Sets the configuration options for a PeregrineMQ instance.\n *\n * @param {Config} config - An object containing configuration options for the instance.\n * @return {void}\n */\n configure: (config: Config) => void\n\n /**\n * Retrieves a list of all channels and their subscribers.\n *\n * @return { string[] }\n */\n getChannels: () => string[]\n\n /**\n * Removes all channels that have no subscribers.\n *\n * @return {void}\n */\n prune: () => void\n\n /**\n * Removes a specified channel from the collection.\n *\n * @param {string} channel - The name of the channel to remove.\n * @return {boolean} - Returns true if the channel was successfully removed, otherwise false.\n */\n removeChannel: (channel: string) => boolean\n\n /**\n * Publishes a message to a specified channel, passing the data to its subscribers.\n *\n * @param {string} channel - The channel to publish the message to.\n * @param {unknown} [data] - The data to pass to subscribers.\n * @return {boolean} - Returns true if the message was successfully published, otherwise false.\n */\n publish: (channel: string, data?: unknown) => PublishReturnType\n\n /**\n * Subscribes a function to a specified channel.\n * The returned unsubscribe function is unique and should be stored for later use.\n *\n * @param {string} channel - The channel name to subscribe to.\n * @param {Callback} callback - The function to call when a new message is published.\n * @return {() => boolean} - The unsubscribe function.\n */\n subscribe: (channel: string, callback: Callback) => () => boolean\n\n /**\n * Unsubscribes a callback from a channel.\n * Returns true if the callback was successfully unsubscribed, otherwise false.\n *\n * @param {Callback} callback - The callback to unsubscribe.\n * @param {UnsubscribeOptions} [options] - Options for unsubscribing, including the channel.\n * @return {boolean} - Returns true if the callback was successfully unsubscribed, otherwise false.\n */\n unsubscribe: (callback: Callback, options?: UnsubscribeOptions) => boolean\n\n /**\n * Checks if a specified callback is subscribed to a specified channel (or any channel if not specified).\n *\n * @param {Callback} callback - The callback to check for subscription.\n * @param {string} [channel] - The channel to check for subscription. If not specified, all channels will be checked.\n * @return {boolean} - Returns true if the callback is subscribed, otherwise false.\n */\n isSubscribed: (callback: Callback, channel?: string) => boolean\n\n /**\n * Removes all channels and subscribers from the collection.\n *\n * @function\n * @alias clear\n */\n clear: () => void\n\n /**\n * Retrieves the identifier for the specific instance of PeregrineMQ.\n *\n * @return {string} - A string identifier for the specific instance.\n */\n getId: () => string\n}\nexport const NON_EXISTENT_CHANNEL = 'NON_EXISTENT_CHANNEL'\n\nexport type NON_EXISTENT_CHANNEL_TYPE = typeof NON_EXISTENT_CHANNEL\n\nexport type PublishToChannelReturnType = NON_EXISTENT_CHANNEL_TYPE\n | undefined | boolean | unknown | Array<undefined | boolean | unknown>\n\nexport type PublishReturnType = PublishToChannelReturnType | PublishToChannelReturnType[]\n"],"names":["NON_EXISTENT_CHANNEL"],"mappings":"AAsHO,MAAMA,IAAuB;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiny-state-machine.base.js","sources":["../../../../../src/core/utils/appState/stateMachine/tiny-state-machine.base.ts"],"sourcesContent":["export enum TinyStateMachineEventType {\n CHANGE = 'change',\n TRANSITIONED_TO = 'transitionedTo',\n TRANSITIONED_FROM = 'transitionedFrom',\n ADDED_TO_QUEUE = 'addedToQueue',\n REMOVED_FROM_QUEUE = 'removedFromQueue'\n}\n\nexport type TinyStateMachineListenerCallBack = (\n stateEvent: TinyStateMachineEvent,\n state?: ITinyStateMachineState\n) => void;\n\nexport class TinyStateMachineEvent extends Event {\n constructor(type: TinyStateMachineEventType, eventInitDict?: any) {\n super(type, eventInitDict)\n }\n}\n\ninterface IPubSub {\n subscribe: (listener: TinyStateMachineListenerCallBack) => () => void\n unsubscribe: (listener: TinyStateMachineListenerCallBack) => void\n publish: (...args: any[]) => void\n}\n\nexport interface ITinyStateMachineState extends IPubSub {\n name: string\n}\n\nexport class TinyStateMachineState implements ITinyStateMachineState {\n #name: string\n\n #listeners: Set<TinyStateMachineListenerCallBack>\n\n constructor(name: string) {\n this.#name = name\n this.#listeners = new Set<TinyStateMachineListenerCallBack>()\n }\n\n get name(): string {\n return this.#name\n }\n\n subscribe = (listener: TinyStateMachineListenerCallBack): () => void => {\n this.#listeners.add(listener)\n return () => this.#listeners.delete(listener)\n }\n\n unsubscribe = (listener: TinyStateMachineListenerCallBack): boolean => this.#listeners.delete(listener)\n\n publish = (event: TinyStateMachineEvent): void => {\n if (!this.#listeners?.size) {\n return\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const listener of this.#listeners) {\n listener(event)\n }\n }\n\n toString = (): string => `TinyStateMachineSate: ${this.#name}`\n\n get [Symbol.toStringTag](): string {\n return `TinyStateMachineSate: ${this.#name}`\n }\n}\n\nexport interface ITinyStateMachine extends IPubSub {\n states: Set<TinyStateMachineState>\n addState: (state: TinyStateMachineState) => void\n removeState: (state: TinyStateMachineState) => void\n currentState: undefined | TinyStateMachineState\n gotoState: (state: TinyStateMachineState) => void | boolean\n\n}\n\nexport const createStates = (stateNames: string[]): Set<TinyStateMachineState> => new Set(\n stateNames.map((name: string) => new TinyStateMachineState(name)),\n)\n\nexport class TinyStateMachine implements ITinyStateMachine {\n #states: Set<TinyStateMachineState>\n\n #listeners: Set<TinyStateMachineListenerCallBack>\n\n #currentState: undefined | TinyStateMachineState\n\n constructor(states: Set<TinyStateMachineState>) {\n this.#states = states\n this.#listeners = new Set<TinyStateMachineListenerCallBack>()\n }\n\n addState = (state: TinyStateMachineState): void => {\n this.#states.add(state)\n }\n\n removeState = (state: TinyStateMachineState): void => {\n this.#states.delete(state)\n }\n\n get states (): Set<TinyStateMachineState> {\n return this.#states\n }\n\n get currentState (): undefined | TinyStateMachineState {\n return this.#currentState\n }\n\n subscribe = (listener: TinyStateMachineListenerCallBack): () => void => {\n this.#listeners.add(listener)\n return () => this.#listeners.delete(listener)\n }\n\n unsubscribe = (listener: TinyStateMachineListenerCallBack): void => {\n this.#listeners.delete(listener)\n }\n\n publish = (event: TinyStateMachineEvent, state?: TinyStateMachineState): void => {\n if (!this.#listeners?.size) {\n return\n }\n // eslint-disable-next-line no-restricted-syntax\n for (const listener of this.#listeners) {\n listener(event, state)\n }\n }\n\n #getStateByName = (stateName: string): undefined | TinyStateMachineState => Array\n .from(this.#states).find((state: TinyStateMachineState) => state.name === stateName)\n\n #getStateByState\n = (state: TinyStateMachineState): undefined | TinyStateMachineState => (this.#states.has(state) ? state : undefined)\n\n gotoState = (state: TinyStateMachineState | string): void | boolean => {\n const foundState = typeof state === 'string'\n ? this.#getStateByName(state as string)\n : this.#getStateByState(state as TinyStateMachineState)\n\n if (!foundState) {\n throw Error(`TinyStateMachin::gotoState state not found: ${state}`)\n }\n\n const prevState: undefined | TinyStateMachineState = this.#currentState\n\n this.#currentState = foundState\n this.publish(new TinyStateMachineEvent(TinyStateMachineEventType.TRANSITIONED_FROM), prevState)\n this.publish(new TinyStateMachineEvent(TinyStateMachineEventType.TRANSITIONED_TO), foundState)\n\n prevState?.publish(new TinyStateMachineEvent(TinyStateMachineEventType.TRANSITIONED_FROM))\n this.#currentState.publish(new TinyStateMachineEvent(TinyStateMachineEventType.TRANSITIONED_TO))\n return true\n }\n\n next = (): TinyStateMachineState | null => {\n let nextState: TinyStateMachineState\n const arrayOfStates: TinyStateMachineState[] = Array.from(this.#states)\n\n if (!this.#currentState) {\n [nextState] = arrayOfStates\n\n return this.gotoState(nextState) ? nextState : null\n }\n\n const currentStateIndex = arrayOfStates\n .findIndex((state: TinyStateMachineState) => state === this.#currentState)\n\n if (currentStateIndex < this.#states.size - 2) {\n nextState = arrayOfStates[currentStateIndex + 1]\n return this.gotoState(nextState) ? nextState : null\n }\n\n return null\n }\n}\n\n\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport const stateIterator = function* () {\n let operation: string\n let state: string = stateIterator.IS_RUNNING\n\n while (true) {\n // console.log('inside while loop')\n\n // // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // // @ts-ignore\n\n\n // // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // // @ts-ignore\n operation = yield state\n\n // // console.log('operation', operation)\n // // console.log('state', state)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n if (operation === stateIterator.DO_END) {\n state = stateIterator.IS_FINITE\n yield state\n break\n }\n }\n yield* [1, 2, 3]\n yield 123\n\n return 10\n}\n\nstateIterator.DO_END = '__DO__END__'\nstateIterator.IS_FINITE = '__IS__FINITE__'\nstateIterator.IS_RUNNING = '__IS__RUNNING__'\n"],"names":["TinyStateMachineEventType","TinyStateMachineEvent","type","eventInitDict","_name","_listeners","TinyStateMachineState","name","__privateAdd","__publicField","listener","__privateGet","event","_a","__privateSet","createStates","stateNames","_states","_currentState","_getStateByName","_getStateByState","TinyStateMachine","states","state","stateName","foundState","prevState","nextState","arrayOfStates","currentStateIndex","stateIterator","operation"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.vanillajs.js","sources":["../../../../../src/core/utils/appState/store/store.vanillajs.ts"],"sourcesContent":["\n// TinyStore, inspired by https://github.com/jherr/syncexternalstore/blob/main/csr/src/store.js\n\nimport { isFunctionAsync } from '../../helpers'\n\n\nlet SET_STATE_MERGE: boolean = true\n\n\nexport const canSetStateMerge = (value: boolean): void => {\n SET_STATE_MERGE = !!value\n}\n\nexport const getSetStateMerge = (): boolean => SET_STATE_MERGE\n\n/**\n * Represents the callback function for a store listener.\n */\nexport type ListenerCallBack<T> = (state: Partial<T>) => void\n\n/**\n * Represents a selector function that transforms the store state.\n */\n// export type Selector<T> = (state: Partial<T>) => Partial<T>;\nexport type SelectedValueType<T> = Partial<T> | Partial<keyof T>\n| string | number | boolean | undefined | string[] | number[] | boolean[] | undefined[];\nexport type Selector<T> = (state: Partial<T>) => SelectedValueType<T>;\n\n\n/**\n * Represents an equality function for comparing selected values.\n */\nexport type EqualityFn<T> = (a: SelectedValueType<T>, b: SelectedValueType<T>) => boolean\n\n\n/**\n * Shallow equality check for selector results.\n * Handles primitives (===), null/undefined, arrays (element-wise ===), and plain objects (own-key ===).\n */\nexport const shallowEqual = <T>(a: SelectedValueType<T>, b: SelectedValueType<T>): boolean => {\n if (Object.is(a, b)) { return true }\n if (typeof a !== 'object' || typeof b !== 'object' || a == null || b == null) { return false }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) { return false }\n return a.every((val, i) => Object.is(val, (b as unknown[])[i]))\n }\n\n const keysA = Object.keys(a as object)\n const keysB = Object.keys(b as object)\n\n if (keysA.length !== keysB.length) { return false }\n return keysA.every(\n (key) => Object.is(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n ),\n )\n}\n\n/**\n * Represents a listener for the store.\n */\nexport type Listener<T> = {\n selector?: Selector<T>\n previousValue?: SelectedValueType<T>\n equalityFn?: EqualityFn<T>\n} & ListenerCallBack<T>\n\n/**\n * Represents a store.\n */\nexport type Store<T> = {\n /**\n * Get the current state of the store.\n * @returns The current state of the store.\n */\n getState: () => Partial<T>\n /**\n * Set the state of the store.\n * @param state - The new state to set.\n * @returns A promise that resolves to the new state.\n */\n setState: (state: Partial<T>) => Promise<Partial<T>>\n /**\n * Subscribe a listener to the store.\n * @param listener - The listener function to be subscribed.\n * @param selector - Optional selector function to transform the store state.\n * @returns A function to unsubscribe the listener.\n */\n subscribe: (listener: Listener<T>, selector?: Selector<T>, equalityFn?: EqualityFn<T>) => () => void\n /**\n * Unubscribe a listener from the store.\n * @param listener - The listener function to be unsubscribed.\n */\n unsubscribe: (listener: Listener<T>) => void\n}\n// & { actions?: { [actionName: string]: ActionHandlerCaller } }\n\n// TODO infer actionNames from createStore arguments\n/**\n * Represents a store with additional actions.\n */\nexport type StoreWithActions<T> = Store<T> & { actions: { [actionName: string]: ActionHandlerCaller<T> } }\n\n\n\n\n/**\n * Represents an action handler function.\n */\nexport type ActionHandler<T> = (\n getState: Store<T>['getState'], // Function to get the current state of the store\n setState: Store<T>['setState'], // Function to set the state of the store\n ...rest: unknown[]\n) => void | Partial<T> | Promise<void | Partial<T>>\n\n/**\n * Represents an reducer function.\n */\nexport type Reducer<T> = (\n state: Partial<T>,\n action: string,\n ...rest: unknown[]\n) => Partial<T>\n\n\n/**\n * Represents a function that calls an action handler.\n */\nexport type ActionHandlerCaller<T> = (...args: unknown[]) => void | Partial<T> | Promise<void | Partial<T>>\n\n\ntype Actions<T> = { [key: string]: ActionHandler<T>}\n/**\n * Creates a new store.\n * @param initialState - The initial state of the store.\n * @param actions - Optional actions for the store.\n * @returns The created store.\n */\nexport const createStore = <T>(\n initialState: Partial<T>,\n actions?: Actions<T>,\n reducer?: Reducer<T>,\n): Store<T> | StoreWithActions<T> => {\n let currentState: Partial<T> = initialState\n const listeners = new Set<Listener<T>>()\n\n /**\n * Gets the current state of the store.\n * @returns The current state of the store.\n */\n const getState = (): Partial<T> => currentState\n\n // TODO debounce, batch? what is the meaningful time between setState ofr UI to be rendered and registerd by User?\n /**\n * Sets the state of the store.\n * @param newState - The new state to set.\n * @returns A promise that resolves to the new state.\n */\n const setState = async (newState: Partial<T>): Promise<Partial<T>> => {\n currentState = SET_STATE_MERGE ? { ...getState(), ...newState } : newState\n\n const errors: unknown[] = []\n\n // eslint-disable-next-line no-restricted-syntax\n for (const listener of listeners) {\n try {\n // has Listener selector?\n const selector: Selector<T> | undefined = listener?.selector\n const newValue: SelectedValueType<T> = selector ? selector(currentState) : currentState\n\n const effectiveEqualityFn = listener.equalityFn ?? (selector ? shallowEqual : undefined)\n const isEqual = effectiveEqualityFn\n ? effectiveEqualityFn(listener.previousValue as SelectedValueType<T>, newValue)\n : listener.previousValue !== undefined && listener.previousValue === newValue\n\n if (!isEqual) {\n listener.previousValue = newValue\n // eslint-disable-next-line no-await-in-loop\n await listener(newValue as Partial<T>)\n }\n } catch (error) {\n errors.push(error)\n }\n }\n\n if (errors.length > 0) {\n throw errors[0]\n }\n\n return currentState\n }\n\n /**\n * Represents the basic API of the store.\n */\n const storeBaseicApi: Store<T> = {\n /**\n * Get the current state of the store.\n * @returns The current state of the store.\n */\n getState,\n /**\n * Set the state of the store.\n * @param state - The new state to set.\n * @returns A promise that resolves to the new state.\n */\n setState,\n /**\n * Subscribe a listener to the store.\n * @param listener - The listener function to be subscribed.\n * @returns A function to unsubscribe the listener.\n */\n subscribe: (listener: Listener<T>, selector?: Selector<T>, equalityFn?: EqualityFn<T>) => {\n if (selector && listener.selector && listener.selector !== selector) {\n throw new Error('Error, mismatch selector, listener.selector !== selector.')\n }\n if (selector && !listener.selector) {\n // eslint-disable-next-line no-param-reassign\n listener.selector = selector\n }\n if (equalityFn && !listener.equalityFn) {\n // eslint-disable-next-line no-param-reassign\n listener.equalityFn = equalityFn\n }\n\n if (listener.selector) {\n // setting the previousValue for the next cache/equality check\n // eslint-disable-next-line no-param-reassign\n listener.previousValue = listener.selector(getState())\n }\n\n listeners.add(listener)\n return () => listeners.delete(listener)\n },\n /**\n * Unsubscribe a listener from the store.\n * @param listener - The listener function to be unsubscribed.\n */\n unsubscribe: (listener: Listener<T>) => {\n listeners.delete(listener)\n },\n }\n\n /**\n * Resolves the actions and creates action handlers.\n */\n const resolvedActions: Actions<T> | null | undefined\n = actions ? Object.entries(actions)?.reduce(\n (\n aggregator: Record<string, ActionHandlerCaller<T>>,\n [actionName, actionHandler]: [string, ActionHandler<T>],\n ) => {\n // eslint-disable-next-line no-param-reassign\n aggregator[actionName] = async(...rest: unknown[]): Promise<void | Partial<T>> => {\n // TODO try to not call subscriber too many times becuase of Error and Pending values\n const isAsync = isFunctionAsync(actionHandler as () => unknown)\n\n if (isAsync) {\n setState({\n ...getState(),\n [`${actionName}Error`]: null,\n [`${actionName}Pending`]: true,\n })\n }\n\n try {\n const resultOfAction = await actionHandler(getState, setState, ...rest)\n\n // TODO try to mutate state only once with the results, that means pass custom setState to action,\n // so that it would matk pending and error already inside action\n if (reducer) {\n setState(reducer(getState(), actionName, ...rest))\n }\n\n if (isAsync) {\n setState({ ...getState(), [`${actionName}Pending`]: false })\n }\n\n return resultOfAction\n } catch (error) {\n if (isAsync) {\n setState({\n ...getState(),\n [`${actionName}Pending`]: false,\n [`${actionName}Error`]: error,\n })\n }\n throw error\n }\n }\n\n return aggregator\n },\n {},\n ) : null\n\n /**\n * Represents the store combined with actions.\n */\n const storeCombinedWithActions = {\n ...storeBaseicApi,\n ...(resolvedActions ? { actions: { ...resolvedActions } } : {}),\n }\n\n return resolvedActions\n ? storeCombinedWithActions as StoreWithActions<T>\n // ? storeCombinedWithActions as StoreWithActions<T> & ActionsStateReturnType<A>\n : storeCombinedWithActions as Store<T>\n}\n"],"names":["SET_STATE_MERGE","canSetStateMerge","value","getSetStateMerge","shallowEqual","a","b","val","i","keysA","keysB","key","createStore","initialState","actions","reducer","currentState","listeners","getState","setState","newState","errors","listener","selector","newValue","effectiveEqualityFn","error","storeBaseicApi","equalityFn","resolvedActions","_a","aggregator","actionName","actionHandler","rest","isAsync","isFunctionAsync","resultOfAction","storeCombinedWithActions"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.vanillajs.templates.js","sources":["../../../../../src/core/utils/appState/store/store.vanillajs.templates.ts"],"sourcesContent":["import { ActionHandler, Reducer, Store, StoreWithActions, createStore } from './store.vanillajs'\n\n\ntype DefaultES = { [key: string]: any }\n\n\nexport type DataState<T, ES = DefaultES> = {\n dataId: string\n isLoading: boolean\n error?: unknown\n data?: T\n} & ES\n\n\ntype Load<T, ES = DefaultES> = (\n getState: Store<DataState<T, ES>>['getState'],\n setState: Store<DataState<T, ES>>['setState'],\n dataPromise: unknown | Promise<unknown>,\n) => Promise<Partial<DataState<T, ES>>>\n\n\ntype LoadHandler<T, ES = DefaultES> = (\n dataPromise: unknown | Promise<unknown>,\n) => Promise<Partial<DataState<T, ES>>>\n\n/**\n * Creates a data store with actions.\n * @param dataId - The ID of the data.\n * @param actions - Optional actions for the data store.\n * @returns The created data store with actions.\n */\nexport const createDataStore\n= <T, ES = DefaultES>(\n dataId: string,\n initialState?: Partial<ES>,\n actions?: Record<string, ActionHandler<DataState<T, ES>>>,\n reducer?: Reducer<DataState<T, ES>>,\n): StoreWithActions<DataState<T, ES>>\n& { actions: { load: LoadHandler<T, ES> } } => {\n const loadActions: { load: Load<T, ES> } = {\n ...actions,\n /**\n * Loads data into the data store.\n * @param getState - Function to get the current state of the data store.\n * @param setState - Function to set the state of the data store.\n * @param dataPromise - The data promise to be loaded.\n * @returns A promise that resolves to the updated state of the data store.\n */\n load: async (\n getState: Store<DataState<T, ES>>['getState'],\n setState: Store<DataState<T, ES>>['setState'],\n dataPromise: unknown | Promise<unknown>,\n ) => {\n const dataState: Partial<DataState<T, ES>> = getState()\n\n setState({ ...dataState, isLoading: true })\n\n try {\n const response: unknown = await dataPromise\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n dataState.data = response?.data || response\n } catch (error: unknown) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n dataState.error = error\n }\n return setState({ ...dataState, isLoading: false })\n },\n }\n\n return (createStore<DataState<T, ES>>({\n ...initialState,\n dataId,\n isLoading: false,\n } as Partial<DataState<T, ES>>, loadActions, reducer)) as StoreWithActions<DataState<T, ES>>\n & { actions: { load: LoadHandler<T, ES> } }\n}\n"],"names":["createDataStore","dataId","initialState","actions","reducer","loadActions","getState","setState","dataPromise","dataState","response","error","createStore"],"mappings":";AA+BO,MAAMA,IACX,CACAC,GACAC,GACAC,GACAC,MAE6C;AAC7C,QAAMC,IAAqC;AAAA,IACzC,GAAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQH,MAAM,OACJG,GACAC,GACAC,MACG;AACH,YAAMC,IAAuCH,EAAA;AAE7C,MAAAC,EAAS,EAAE,GAAGE,GAAW,WAAW,IAAM;AAE1C,UAAI;AACF,cAAMC,IAAoB,MAAMF;AAIhC,QAAAC,EAAU,QAAOC,KAAA,gBAAAA,EAAU,SAAQA;AAAA,MACrC,SAASC,GAAgB;AAGvB,QAAAF,EAAU,QAAQE;AAAA,MACpB;AACA,aAAOJ,EAAS,EAAE,GAAGE,GAAW,WAAW,IAAO;AAAA,IACpD;AAAA,EAAA;AAGF,SAAQG,EAA8B;AAAA,IACpC,GAAGV;AAAA,IACH,QAAAD;AAAA,IACA,WAAW;AAAA,EAAA,GACmBI,GAAaD,CAAO;AAEtD;"}
@@ -0,0 +1,6 @@
1
+ const r = (t) => t[0], s = (t) => t[t.length - 1];
2
+ export {
3
+ r as ArrayFirst,
4
+ s as ArrayLast
5
+ };
6
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sources":["../../../src/core/utils/array.ts"],"sourcesContent":["export const ArrayFirst = <T>(arr: T[]): T | undefined => arr[0]\nexport const ArrayLast = <T>(arr: T[]): T | undefined => arr[arr.length - 1]\n"],"names":["ArrayFirst","arr","ArrayLast"],"mappings":"AAAO,MAAMA,IAAa,CAAIC,MAA4BA,EAAI,CAAC,GAClDC,IAAY,CAAID,MAA4BA,EAAIA,EAAI,SAAS,CAAC;"}
@@ -0,0 +1,100 @@
1
+ import e from "dayjs";
2
+ import T from "dayjs/plugin/relativeTime";
3
+ import M from "dayjs/plugin/updateLocale";
4
+ import v from "dayjs/plugin/customParseFormat";
5
+ const w = {
6
+ thresholds: [
7
+ { l: "s", r: 1 },
8
+ { l: "m", r: 1 },
9
+ { l: "mm", r: 59, d: "minute" },
10
+ { l: "h", r: 1 },
11
+ { l: "hh", r: 23, d: "hour" },
12
+ { l: "d", r: 1 },
13
+ { l: "dd", r: 29, d: "day" },
14
+ { l: "M", r: 1 },
15
+ { l: "MM", r: 11, d: "month" },
16
+ { l: "y", r: 1 },
17
+ { l: "yy", d: "year" }
18
+ ]
19
+ }, c = {
20
+ future: "in %s",
21
+ past: "%s ago",
22
+ s: "now",
23
+ m: "now",
24
+ mm: "now",
25
+ h: "1 hour",
26
+ hh: "%d hours",
27
+ d: "a day",
28
+ dd: "%d days",
29
+ // probably 'a week' instead?
30
+ M: "a month",
31
+ MM: "%d months",
32
+ y: "a year",
33
+ yy: "%d years"
34
+ }, y = {
35
+ future: "za %s",
36
+ past: "%s před",
37
+ s: "nyní",
38
+ m: "nyní",
39
+ mm: "nyní",
40
+ h: "1 hodinu",
41
+ hh: "%d hodiny",
42
+ d: "den",
43
+ dd: "%d dny",
44
+ M: "měsíc",
45
+ MM: "%d měsíci",
46
+ y: "rok",
47
+ yy: "%d roky"
48
+ };
49
+ let u = !1;
50
+ function f() {
51
+ u || (u = !0, e.extend(v), e.extend(T, w), e.extend(M), e.updateLocale("cz", {
52
+ relativeTime: { ...y }
53
+ }), e.updateLocale("en", {
54
+ relativeTime: { ...c }
55
+ }));
56
+ }
57
+ const x = (o, t) => (f(), e.updateLocale("en", {
58
+ relativeTime: {
59
+ ...t === "cz" ? y : c,
60
+ ...T
61
+ }
62
+ }), e(o, void 0).fromNow(!0)), D = (o, t) => p({ ...t, from: !0, value: o }), $ = (o, t) => p({ ...t, to: !0, value: o }), p = ({
63
+ value: o,
64
+ valueFormat: t,
65
+ formatString: a,
66
+ language: r = "en",
67
+ relativeTime: m,
68
+ from: i,
69
+ to: d,
70
+ shouldAddDay: n = !1,
71
+ shouldSubtractDay: s = !1,
72
+ showPreffix: h = !1
73
+ }) => {
74
+ if (f(), e.updateLocale("en", {
75
+ relativeTime: {
76
+ ...r === "cz" ? y : c,
77
+ ...m
78
+ }
79
+ }), e.locale(r), !i && d) {
80
+ const l = e(o, t || void 0).add(n ? 1 : 0, "day");
81
+ return e(/* @__PURE__ */ new Date()).locale(r).to(l, !h);
82
+ }
83
+ if (i && !d) {
84
+ const l = e(o, t || void 0).subtract(s ? 1 : 0, "day");
85
+ return e(l, t || void 0).locale(r).fromNow(!h);
86
+ }
87
+ return e(o, t || void 0).locale(r).format(a);
88
+ }, k = (o, t, a, r, m = " - ", i = "month") => {
89
+ f();
90
+ const d = e(o), n = e(t), s = d.diff(n, i);
91
+ return `${d.format(s === 0 ? a : r)}${m}${n.format(r)}`;
92
+ };
93
+ export {
94
+ k as dateRangeFormat,
95
+ p as getDateTime,
96
+ D as getTimeFromNow,
97
+ x as getTimeFromNowOriginal,
98
+ $ as getTimeTo
99
+ };
100
+ //# sourceMappingURL=date.js.map