@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,2 +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 f=require("./peregrineMQ.types.js"),d=require("../../../../../node_modules/uuid/dist/esm-browser/v4.js");class o extends Error{constructor(){super("Clearing PeregrineMQ is not allowed. Please read the documentation for more information."),this.name="PeregrineMQClearError"}}class g{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 f.NON_EXISTENT_CHANNEL;const l=r[Symbol.iterator]();let u=l.next().value;const i=[];for(;u;)i.push(u(e,t)),u=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 u=[];for(;r--;){const i=this.publishToChannel(t.slice(0,l+1).join("."),r!==t.length-1,s);l+=1,u.push(i)}return u}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 u=this.listeners.get(e)||[];for(const i of u)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 o});n(this,"getId",()=>this.id);this.id=e||d.default(),this.configure(s||{})}get length(){return[...this.channels.values()].reduce((e,s)=>e+s.size,0)}}exports.PeregrineMQ=g;exports.PeregrineMQClearError=o;
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
2
  //# sourceMappingURL=peregrineMQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"peregrineMQ.js","sources":["../../../../../../../../src/core/utils/appState/peregrineMQ/peregrineMQ.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid'\n\nimport {\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 || uuidv4()\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","uuidv4","acc"],"mappings":"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"}
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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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});Object.defineProperty(Array.prototype,"last",{get(){return this[this.length-1]},set(t){return this[this.length-1]=t,this}});Object.defineProperty(Array.prototype,"first",{get(){return this[0]},set(t){return this[0]=t,this}});const r=Array.prototype.first,e=Array.prototype.last;exports.ArrayFirst=r;exports.ArrayLast=e;
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
2
  //# sourceMappingURL=array.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sources":["../../../../../../src/core/utils/array.ts"],"sourcesContent":["/* eslint-disable no-extend-native */\nObject.defineProperty(Array.prototype, 'last', {\n get() { return this[this.length - 1] },\n set(v) { this[this.length - 1] = v; return this },\n})\n\n\nObject.defineProperty(Array.prototype, 'first', {\n get() { return this[0] },\n set(v) { this[0] = v; return this },\n})\n\n// redeclare array, to have last, first accessors\ndeclare global {\n interface Array<T> {\n last: T | undefined\n first: T | undefined\n }\n}\n\nexport default Array.prototype\n\n\nexport const ArrayFirst = Array.prototype.first\nexport const ArrayLast = Array.prototype.last\n"],"names":["v","ArrayFirst","ArrayLast"],"mappings":"gFACA,OAAO,eAAe,MAAM,UAAW,OAAQ,CAC7C,KAAM,CAAE,OAAO,KAAK,KAAK,OAAS,CAAC,CAAE,EACrC,IAAIA,EAAG,CAAE,YAAK,KAAK,OAAS,CAAC,EAAIA,EAAU,IAAK,CAClD,CAAC,EAGD,OAAO,eAAe,MAAM,UAAW,QAAS,CAC9C,KAAM,CAAE,OAAO,KAAK,CAAC,CAAE,EACvB,IAAIA,EAAG,CAAE,YAAK,CAAC,EAAIA,EAAU,IAAK,CACpC,CAAC,EAaM,MAAMC,EAAa,MAAM,UAAU,MAC7BC,EAAY,MAAM,UAAU"}
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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const M=require("dayjs"),p=require("dayjs/plugin/relativeTime"),v=require("dayjs/plugin/updateLocale"),_=require("dayjs/plugin/customParseFormat"),n=e=>e&&e.__esModule?e:{default:e},t=n(M),h=n(p),w=n(v),g=n(_),N={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"}]},c={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"},f={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"};t.default.extend(g.default);t.default.extend(h.default,N);t.default.extend(w.default);t.default.updateLocale("cz",{relativeTime:{...f}});t.default.updateLocale("en",{relativeTime:{...c}});const L=(e,d)=>(t.default.updateLocale("en",{relativeTime:{...d==="cz"?f:c,...h.default}}),t.default(e,void 0).fromNow(!0)),F=(e,d)=>y({...d,from:!0,value:e}),q=(e,d)=>y({...d,to:!0,value:e}),y=({value:e,valueFormat:d,formatString:i,language:o="en",relativeTime:s,from:r,to:a,shouldAddDay:l=!1,shouldSubtractDay:u=!1,showPreffix:T=!1})=>{if(t.default.updateLocale("en",{relativeTime:{...o==="cz"?f:c,...s}}),t.default.locale(o),!r&&a){const m=t.default(e,d||void 0).add(l?1:0,"day");return t.default(new Date).locale(o).to(m,!T)}if(r&&!a){const m=t.default(e,d||void 0).subtract(u?1:0,"day");return t.default(m,d||void 0).locale(o).fromNow(!T)}return t.default(e,d||void 0).locale(o).format(i)},z=(e,d,i,o,s=" - ",r="month")=>{const a=t.default(e),l=t.default(d),u=a.diff(l,r);return`${a.format(u===0?i:o)}${s}${l.format(o)}`};exports.dateRangeFormat=z;exports.getDateTime=y;exports.getTimeFromNow=F;exports.getTimeFromNowOriginal=L;exports.getTimeTo=q;
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
2
  //# sourceMappingURL=date.js.map
@@ -1 +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\ndayjs.extend(customParseFormat)\ndayjs.extend(relativeTime, relativeTimeConfig)\ndayjs.extend(updateLocale)\n\ndayjs.updateLocale('cz', {\n relativeTime: {\n ...relativeTimeCZ,\n },\n})\ndayjs.updateLocale('en', {\n relativeTime: {\n ...relativeTimeEN,\n },\n})\n\nexport const getTimeFromNowOriginal = (value: string, language: string): string => {\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 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 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","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
+ {"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":"kSAkBMA,EAAqB,CACzB,WAAY,CACV,CAAE,EAAG,IAAK,EAAG,CAAA,EACb,CAAE,EAAG,IAAK,EAAG,CAAA,EACb,CAAE,EAAG,KAAM,EAAG,GAAI,EAAG,QAAA,EACrB,CAAE,EAAG,IAAK,EAAG,CAAA,EACb,CAAE,EAAG,KAAM,EAAG,GAAI,EAAG,MAAA,EACrB,CAAE,EAAG,IAAK,EAAG,CAAA,EACb,CAAE,EAAG,KAAM,EAAG,GAAI,EAAG,KAAA,EACrB,CAAE,EAAG,IAAK,EAAG,CAAA,EACb,CAAE,EAAG,KAAM,EAAG,GAAI,EAAG,OAAA,EACrB,CAAE,EAAG,IAAK,EAAG,CAAA,EACb,CAAE,EAAG,KAAM,EAAG,MAAA,CAAO,CAEzB,EAEMC,EAAiB,CACrB,OAAQ,QACR,KAAM,SACN,EAAG,MACH,EAAG,MACH,GAAI,MACJ,EAAG,SACH,GAAI,WACJ,EAAG,QACH,GAAI,UACJ,EAAG,UACH,GAAI,YACJ,EAAG,SACH,GAAI,UACN,EAEMC,EAAiB,CACrB,OAAQ,QACR,KAAM,UACN,EAAG,OACH,EAAG,OACH,GAAI,OACJ,EAAG,WACH,GAAI,YACJ,EAAG,MACH,GAAI,SACJ,EAAG,QACH,GAAI,YACJ,EAAG,MACH,GAAI,SACN,EAEA,IAAIC,EAAoB,GACxB,SAASC,GAAY,CACfD,IACJA,EAAoB,GACpBE,EAAAA,QAAM,OAAOC,SAAiB,EAC9BD,UAAM,OAAOE,EAAAA,QAAcP,CAAkB,EAC7CK,EAAAA,QAAM,OAAOG,SAAY,EACzBH,EAAAA,QAAM,aAAa,KAAM,CACvB,aAAc,CAAE,GAAGH,CAAA,CAAe,CACnC,EACDG,EAAAA,QAAM,aAAa,KAAM,CACvB,aAAc,CAAE,GAAGJ,CAAA,CAAe,CACnC,EACH,CAEO,MAAMQ,EAAyB,CAACC,EAAeC,KACpDP,EAAA,EACAC,EAAAA,QAAM,aAAa,KAAM,CACvB,aAAc,CACZ,GAAIM,IAAa,KAAOT,EAAiBD,EACzC,GAAGM,EAAAA,OAAA,CACL,CACD,EACMF,EAAAA,QAAMK,EAAO,MAAS,EAAE,QAAQ,EAAI,GAGhCE,EAAiB,CAC5BF,EACAG,IACWC,EAAY,CAAE,GAAGD,EAAa,KAAM,GAAM,MAAAH,CAAA,CAAO,EAEjDK,EAAY,CACvBL,EACAG,IACWC,EAAY,CAAE,GAAGD,EAAa,GAAI,GAAM,MAAAH,CAAA,CAAO,EAE/CI,EAAc,CAAC,CAC1B,MAAAJ,EACA,YAAAG,EACA,aAAAG,EACA,SAAAL,EAAW,KACX,aAAAJ,EACA,KAAAU,EACA,GAAAC,EACA,aAAAC,EAAe,GACf,kBAAAC,EAAoB,GACpB,YAAAC,EAAc,EAChB,IAA8B,CAW5B,GAVAjB,EAAA,EACAC,EAAAA,QAAM,aAAa,KAAM,CACvB,aAAc,CACZ,GAAIM,IAAa,KAAOT,EAAiBD,EACzC,GAAGM,CAAA,CACL,CACD,EAEDF,EAAAA,QAAM,OAAOM,CAAQ,EAEjB,CAACM,GAAQC,EAAI,CACf,MAAMI,EAASjB,EAAAA,QAAMK,EAAOG,GAAe,MAAS,EAAE,IAAIM,EAAe,EAAI,EAAG,KAAK,EAErF,OAAOd,EAAAA,QAAM,IAAI,IAAM,EAAE,OAAOM,CAAQ,EAAE,GAAGW,EAAQ,CAACD,CAAW,CACnE,CAEA,GAAIJ,GAAQ,CAACC,EAAI,CACf,MAAMI,EAASjB,EAAAA,QAAMK,EAAOG,GAAe,MAAS,EAAE,SAASO,EAAoB,EAAI,EAAG,KAAK,EAE/F,OAAOf,EAAAA,QAAMiB,EAAQT,GAAe,MAAS,EAAE,OAAOF,CAAQ,EAAE,QAAQ,CAACU,CAAW,CACtF,CAEA,OAAOhB,EAAAA,QAAMK,EAAOG,GAAe,MAAS,EAAE,OAAOF,CAAQ,EAAE,OAAOK,CAAY,CACpF,EAEaO,EAAkB,CAC7BC,EAAgBF,EAAcG,EAAqBC,EACnDC,EAAY,MAAOC,EAAuB,UAC9B,CACZxB,EAAA,EACA,MAAMyB,EAAYxB,EAAAA,QAAMmB,CAAQ,EAC1BM,EAAUzB,EAAAA,QAAMiB,CAAM,EAEtBS,EAAaF,EAAU,KAAKC,EAASF,CAAU,EAErD,MAAO,GAAGC,EAAU,OAAOE,IAAe,EAAIN,EAAcC,CAAU,CAAC,GAAGC,CAAS,GAAGG,EAAQ,OAAOJ,CAAU,CAAC,EAClH"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("ramda"),l=(e,t,n)=>e?t:n,y=c.memoizeWith(c.identity),a=c.memoizeWith((...e)=>JSON.stringify(e)),d=(e=(...t)=>JSON.stringify(t))=>c.memoizeWith(e),p=(e,t=100,n=!1)=>{let o;return function(...i){const s=this,r=()=>{clearTimeout(o),o=null,n||e.apply(s,i)},u=n&&!o;clearTimeout(o),o=setTimeout(r,t),u&&e.apply(s,i)}},z=e=>new Promise(t=>{setTimeout(()=>t(`delayed: ${e}`),e)}),m=(async()=>{}).constructor,T=e=>e.constructor===m.prototype.constructor;exports.AsyncFunctionTemplate=m;exports.debounce=p;exports.delay=z;exports.isFunctionAsync=T;exports.memoize=y;exports.memoizeComplex=a;exports.memoizer=d;exports.nestedTernary=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=(e,t,o)=>e?t:o,s=e=>t=>{const o={};return(...n)=>{const c=e(...n);return c in o||(o[c]=t(...n)),o[c]}},a=s((...e)=>String(e[0])),p=s((...e)=>JSON.stringify(e)),d=(e=(...t)=>JSON.stringify(t))=>s(e),T=(e,t=100,o=!1)=>{let n;return function(...i){const r=this,u=()=>{clearTimeout(n),n=null,o||e.apply(r,i)},l=o&&!n;clearTimeout(n),n=setTimeout(u,t),l&&e.apply(r,i)}},f=e=>new Promise(t=>{setTimeout(()=>t(`delayed: ${e}`),e)}),m=(async()=>{}).constructor,z=e=>e.constructor===m.prototype.constructor;exports.AsyncFunctionTemplate=m;exports.debounce=T;exports.delay=f;exports.isFunctionAsync=z;exports.memoize=a;exports.memoizeComplex=p;exports.memoizer=d;exports.nestedTernary=y;
2
2
  //# sourceMappingURL=other.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"other.js","sources":["../../../../../../../src/core/utils/helpers/other.ts"],"sourcesContent":["import { memoizeWith, identity } from 'ramda'\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const nestedTernary = (condition: boolean, branchA: any, branchB: any): any => (condition ? branchA : branchB)\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport const memoize = memoizeWith(identity)\n\n// Beware fellow developer, this is to be used with caution and precison\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport const memoizeComplex = memoizeWith((...args) => JSON.stringify(args))\n\nexport const memoizer\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\n= (memoizeFunc = (...args): string => JSON.stringify(args)): ReturnType<typeof memoizeWith> => memoizeWith(memoizeFunc)\n\nexport const debounce = (func: () => void, wait = 100, immediate = false): () => void => {\n let timeout: any\n\n return function debounced(...args) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context: unknown = this\n const later = (): void => {\n clearTimeout(timeout)\n timeout = null\n if (!immediate) {\n func.apply(context, args)\n }\n }\n const callNow = immediate && !timeout\n\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n if (callNow) {\n func.apply(context, args)\n }\n }\n}\n\nexport const delay = (delay: number): Promise<string> => new Promise((resolve) => {\n setTimeout(() => resolve(`delayed: ${delay}`), delay)\n})\n\nexport const AsyncFunctionTemplate = (async (): Promise<void> => {}).constructor\n\nexport const isFunctionAsync = (\n func: (...args: any[]) => unknown,\n): boolean => func.constructor === AsyncFunctionTemplate.prototype.constructor\n"],"names":["nestedTernary","condition","branchA","branchB","memoize","memoizeWith","identity","memoizeComplex","args","memoizer","memoizeFunc","debounce","func","wait","immediate","timeout","context","later","callNow","delay","resolve","AsyncFunctionTemplate","isFunctionAsync"],"mappings":"yGAGaA,EAAgB,CAACC,EAAoBC,EAAcC,IAAuBF,EAAYC,EAAUC,EAIhGC,EAAUC,EAAAA,YAAYC,EAAAA,QAAQ,EAK9BC,EAAiBF,EAAAA,YAAY,IAAIG,IAAS,KAAK,UAAUA,CAAI,CAAC,EAE9DC,EAGX,CAACC,EAAc,IAAIF,IAAiB,KAAK,UAAUA,CAAI,IAAsCH,EAAAA,YAAYK,CAAW,EAEzGC,EAAW,CAACC,EAAkBC,EAAO,IAAKC,EAAY,KAAsB,CACvF,IAAIC,EAEJ,OAAO,YAAsBP,EAAM,CAIjC,MAAMQ,EAAmB,KACnBC,EAAQ,IAAY,CACxB,aAAaF,CAAO,EACpBA,EAAU,KACLD,GACHF,EAAK,MAAMI,EAASR,CAAI,CAE5B,EACMU,EAAUJ,GAAa,CAACC,EAE9B,aAAaA,CAAO,EACpBA,EAAU,WAAWE,EAAOJ,CAAI,EAC5BK,GACFN,EAAK,MAAMI,EAASR,CAAI,CAE5B,CACF,EAEaW,EAASA,GAAmC,IAAI,QAASC,GAAY,CAChF,WAAW,IAAMA,EAAQ,YAAYD,CAAK,EAAE,EAAGA,CAAK,CACtD,CAAC,EAEYE,GAAyB,SAA2B,CAAC,GAAG,YAExDC,EACXV,GACYA,EAAK,cAAgBS,EAAsB,UAAU"}
1
+ {"version":3,"file":"other.js","sources":["../../../../../../../src/core/utils/helpers/other.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const nestedTernary = (condition: boolean, branchA: any, branchB: any): any => (condition ? branchA : branchB)\n\n/**\n * Creates a memoized version of a function using a custom key function.\n * Replaces ramda's memoizeWith — same API contract.\n */\nconst memoizeWith = (keyFn: (...args: any[]) => string) =>\n <T extends (...args: any[]) => any>(fn: T): T => {\n const cache: Record<string, any> = {}\n return ((...args: any[]) => {\n const key = keyFn(...args)\n if (!(key in cache)) {\n cache[key] = fn(...args)\n }\n return cache[key]\n }) as unknown as T\n }\n\nexport const memoize = memoizeWith((...args) => String(args[0]))\n\n// Beware fellow developer, this is to be used with caution and precison\nexport const memoizeComplex = memoizeWith((...args) => JSON.stringify(args))\n\nexport const memoizer\n= (memoizeFunc = (...args: any[]): string => JSON.stringify(args)) => memoizeWith(memoizeFunc)\n\nexport const debounce = (func: () => void, wait = 100, immediate = false): () => void => {\n let timeout: any\n\n return function debounced(...args) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context: unknown = this\n const later = (): void => {\n clearTimeout(timeout)\n timeout = null\n if (!immediate) {\n func.apply(context, args)\n }\n }\n const callNow = immediate && !timeout\n\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n if (callNow) {\n func.apply(context, args)\n }\n }\n}\n\nexport const delay = (delay: number): Promise<string> => new Promise((resolve) => {\n setTimeout(() => resolve(`delayed: ${delay}`), delay)\n})\n\nexport const AsyncFunctionTemplate = (async (): Promise<void> => {}).constructor\n\nexport const isFunctionAsync = (\n func: (...args: any[]) => unknown,\n): boolean => func.constructor === AsyncFunctionTemplate.prototype.constructor\n"],"names":["nestedTernary","condition","branchA","branchB","memoizeWith","keyFn","fn","cache","args","key","memoize","memoizeComplex","memoizer","memoizeFunc","debounce","func","wait","immediate","timeout","context","later","callNow","delay","resolve","AsyncFunctionTemplate","isFunctionAsync"],"mappings":"gFACO,MAAMA,EAAgB,CAACC,EAAoBC,EAAcC,IAAuBF,EAAYC,EAAUC,EAMvGC,EAAeC,GACiBC,GAAa,CAC/C,MAAMC,EAA6B,CAAA,EACnC,MAAQ,IAAIC,IAAgB,CAC1B,MAAMC,EAAMJ,EAAM,GAAGG,CAAI,EACzB,OAAMC,KAAOF,IACXA,EAAME,CAAG,EAAIH,EAAG,GAAGE,CAAI,GAElBD,EAAME,CAAG,CAClB,CACF,EAEWC,EAAUN,EAAY,IAAII,IAAS,OAAOA,EAAK,CAAC,CAAC,CAAC,EAGlDG,EAAiBP,EAAY,IAAII,IAAS,KAAK,UAAUA,CAAI,CAAC,EAE9DI,EACX,CAACC,EAAc,IAAIL,IAAwB,KAAK,UAAUA,CAAI,IAAMJ,EAAYS,CAAW,EAEhFC,EAAW,CAACC,EAAkBC,EAAO,IAAKC,EAAY,KAAsB,CACvF,IAAIC,EAEJ,OAAO,YAAsBV,EAAM,CAIjC,MAAMW,EAAmB,KACnBC,EAAQ,IAAY,CACxB,aAAaF,CAAO,EACpBA,EAAU,KACLD,GACHF,EAAK,MAAMI,EAASX,CAAI,CAE5B,EACMa,EAAUJ,GAAa,CAACC,EAE9B,aAAaA,CAAO,EACpBA,EAAU,WAAWE,EAAOJ,CAAI,EAC5BK,GACFN,EAAK,MAAMI,EAASX,CAAI,CAE5B,CACF,EAEac,EAASA,GAAmC,IAAI,QAASC,GAAY,CAChF,WAAW,IAAMA,EAAQ,YAAYD,CAAK,EAAE,EAAGA,CAAK,CACtD,CAAC,EAEYE,GAAyB,SAA2B,CAAC,GAAG,YAExDC,EACXV,GACYA,EAAK,cAAgBS,EAAsB,UAAU"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("ramda"),i=e=>e?a.toLower(e):"",s=e=>e?a.toUpper(e):"",l=e=>e?e.toString().replace(/ /g,""):"",u=e=>e.slice((e.lastIndexOf(".")-1>>>0)+2),t=e=>{var n,o;return(o=(n=e==null?void 0:e.normalize("NFD"))==null?void 0:n.replace)==null?void 0:o.call(n,/[\u0300-\u036f]/g,"")},p=(e,n,o=!0,r=!0)=>!n||!e||!n.trim()||!e.trim()?!1:o&&r?t(n.toLowerCase()).includes(t(e.toLowerCase())):o?n.toLowerCase().includes(e.toLowerCase()):r?t(n).includes(t(e)):n.includes(e),g=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),f=(e,n=0,o="...")=>!n||e.length<=n?e:`${e.substr(0,n)}${o}`,c=e=>e&&t(e==null?void 0:e.toLocaleLowerCase().replaceAll(/\s/g,"-").replaceAll(/["]/g,"")),d=e=>e&&encodeURIComponent(c(e));exports.escapeRegExp=g;exports.fileNameExt=u;exports.findStringInText=p;exports.normalizeString=t;exports.removeWhitespaces=l;exports.sanitizeId=c;exports.sanitizePathId=d;exports.toLowerCase=i;exports.toUpperCase=s;exports.truncateText=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=e=>e?e.toLowerCase():"",i=e=>e?e.toUpperCase():"",s=e=>e?e.toString().replace(/ /g,""):"",l=e=>e.slice((e.lastIndexOf(".")-1>>>0)+2),t=e=>{var n,o;return(o=(n=e==null?void 0:e.normalize("NFD"))==null?void 0:n.replace)==null?void 0:o.call(n,/[\u0300-\u036f]/g,"")},p=(e,n,o=!0,r=!0)=>!n||!e||!n.trim()||!e.trim()?!1:o&&r?t(n.toLowerCase()).includes(t(e.toLowerCase())):o?n.toLowerCase().includes(e.toLowerCase()):r?t(n).includes(t(e)):n.includes(e),u=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),g=(e,n=0,o="...")=>!n||e.length<=n?e:`${e.substr(0,n)}${o}`,a=e=>e&&t(e==null?void 0:e.toLocaleLowerCase().replaceAll(/\s/g,"-").replaceAll(/["]/g,"")),f=e=>e&&encodeURIComponent(a(e));exports.escapeRegExp=u;exports.fileNameExt=l;exports.findStringInText=p;exports.normalizeString=t;exports.removeWhitespaces=s;exports.sanitizeId=a;exports.sanitizePathId=f;exports.toLowerCase=c;exports.toUpperCase=i;exports.truncateText=g;
2
2
  //# sourceMappingURL=textValueOperations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textValueOperations.js","sources":["../../../../../../../src/core/utils/helpers/textValueOperations.ts"],"sourcesContent":["import {\n toLower, toUpper,\n} from 'ramda'\n\n// todo memoize\nexport const toLowerCase = (str: string | number): string | number => (str ? toLower(str as string) as string : '')\n\n// todo memoize\nexport const toUpperCase = (str: string): string => (str ? toUpper(str) as string : '')\n\n// todo memoize\nexport const removeWhitespaces = (str: string | number): string | number => (str ? str.toString()\n .replace(/ /g, '') as string : '')\n\n// eslint-disable-next-line no-bitwise\nexport const fileNameExt = (fileName: string): string => fileName.slice((fileName.lastIndexOf('.') - 1 >>> 0) + 2)\n\nexport const normalizeString = (str: string): string => str?.normalize('NFD')?.replace?.(/[\\u0300-\\u036f]/g, '')\n\nexport const findStringInText = (str: string, text: string, ci = true, norm = true): boolean => {\n if (!text || !str || !text.trim() || !str.trim()) {\n return false\n }\n\n if (ci && norm) {\n return normalizeString(text.toLowerCase()).includes(normalizeString(str.toLowerCase()))\n }\n\n if (ci) {\n return text.toLowerCase().includes(str.toLowerCase())\n }\n\n if (norm) {\n return normalizeString(text).includes(normalizeString(str))\n }\n\n return text.includes(str)\n}\n\n// eslint-disable-next-line no-useless-escape\nexport const escapeRegExp = (str: string): string => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&')\n\nexport const truncateText = (text: string, maxNumChars = 0, indicator = '...'): string => {\n if (!maxNumChars || text.length <= maxNumChars) {\n return text\n }\n return `${text.substr(0, maxNumChars)}${indicator}`\n}\n\nexport const sanitizeId\n = (id: string): string => id && normalizeString(id?.toLocaleLowerCase().replaceAll(/\\s/g, '-').replaceAll(/[\"]/g, ''))\n\nexport const sanitizePathId\n = (id: string): string => id && encodeURIComponent(sanitizeId(id))\n"],"names":["toLowerCase","str","toLower","toUpperCase","toUpper","removeWhitespaces","fileNameExt","fileName","normalizeString","_b","_a","findStringInText","text","ci","norm","escapeRegExp","truncateText","maxNumChars","indicator","sanitizeId","id","sanitizePathId"],"mappings":"yGAKaA,EAAeC,GAA2CA,EAAMC,EAAAA,QAAQD,CAAa,EAAc,GAGnGE,EAAeF,GAAyBA,EAAMG,EAAAA,QAAQH,CAAG,EAAc,GAGvEI,EAAqBJ,GAA2CA,EAAMA,EAAI,WACpF,QAAQ,KAAM,EAAE,EAAc,GAGpBK,EAAeC,GAA6BA,EAAS,OAAOA,EAAS,YAAY,GAAG,EAAI,IAAM,GAAK,CAAC,EAEpGC,EAAmBP,GAAA,SAAwB,OAAAQ,GAAAC,EAAAT,GAAA,YAAAA,EAAK,UAAU,SAAf,YAAAS,EAAuB,UAAvB,YAAAD,EAAA,KAAAC,EAAiC,mBAAoB,KAEhGC,EAAmB,CAACV,EAAaW,EAAcC,EAAK,GAAMC,EAAO,KACxE,CAACF,GAAQ,CAACX,GAAO,CAACW,EAAK,QAAU,CAACX,EAAI,OACjC,GAGLY,GAAMC,EACDN,EAAgBI,EAAK,aAAa,EAAE,SAASJ,EAAgBP,EAAI,YAAA,CAAa,CAAC,EAGpFY,EACKD,EAAK,YAAA,EAAc,SAASX,EAAI,aAAa,EAGlDa,EACKN,EAAgBI,CAAI,EAAE,SAASJ,EAAgBP,CAAG,CAAC,EAGrDW,EAAK,SAASX,CAAG,EAIbc,EAAgBd,GAAwBA,EAAI,QAAQ,sCAAuC,MAAM,EAEjGe,EAAe,CAACJ,EAAcK,EAAc,EAAGC,EAAY,QAClE,CAACD,GAAeL,EAAK,QAAUK,EAC1BL,EAEF,GAAGA,EAAK,OAAO,EAAGK,CAAW,CAAC,GAAGC,CAAS,GAGtCC,EACRC,GAAuBA,GAAMZ,EAAgBY,GAAA,YAAAA,EAAI,oBAAoB,WAAW,MAAO,KAAK,WAAW,OAAQ,GAAG,EAE1GC,EACRD,GAAuBA,GAAM,mBAAmBD,EAAWC,CAAE,CAAC"}
1
+ {"version":3,"file":"textValueOperations.js","sources":["../../../../../../../src/core/utils/helpers/textValueOperations.ts"],"sourcesContent":["// todo memoize\nexport const toLowerCase = (str: string | number): string | number => (str ? (str as string).toLowerCase() : '')\n\n// todo memoize\nexport const toUpperCase = (str: string): string => (str ? str.toUpperCase() : '')\n\n// todo memoize\nexport const removeWhitespaces = (str: string | number): string | number => (str ? str.toString()\n .replace(/ /g, '') as string : '')\n\n// eslint-disable-next-line no-bitwise\nexport const fileNameExt = (fileName: string): string => fileName.slice((fileName.lastIndexOf('.') - 1 >>> 0) + 2)\n\nexport const normalizeString = (str: string): string => str?.normalize('NFD')?.replace?.(/[\\u0300-\\u036f]/g, '')\n\nexport const findStringInText = (str: string, text: string, ci = true, norm = true): boolean => {\n if (!text || !str || !text.trim() || !str.trim()) {\n return false\n }\n\n if (ci && norm) {\n return normalizeString(text.toLowerCase()).includes(normalizeString(str.toLowerCase()))\n }\n\n if (ci) {\n return text.toLowerCase().includes(str.toLowerCase())\n }\n\n if (norm) {\n return normalizeString(text).includes(normalizeString(str))\n }\n\n return text.includes(str)\n}\n\n// eslint-disable-next-line no-useless-escape\nexport const escapeRegExp = (str: string): string => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&')\n\nexport const truncateText = (text: string, maxNumChars = 0, indicator = '...'): string => {\n if (!maxNumChars || text.length <= maxNumChars) {\n return text\n }\n return `${text.substr(0, maxNumChars)}${indicator}`\n}\n\nexport const sanitizeId\n = (id: string): string => id && normalizeString(id?.toLocaleLowerCase().replaceAll(/\\s/g, '-').replaceAll(/[\"]/g, ''))\n\nexport const sanitizePathId\n = (id: string): string => id && encodeURIComponent(sanitizeId(id))\n"],"names":["toLowerCase","str","toUpperCase","removeWhitespaces","fileNameExt","fileName","normalizeString","_b","_a","findStringInText","text","ci","norm","escapeRegExp","truncateText","maxNumChars","indicator","sanitizeId","id","sanitizePathId"],"mappings":"gFACO,MAAMA,EAAeC,GAA2CA,EAAOA,EAAe,cAAgB,GAGhGC,EAAeD,GAAyBA,EAAMA,EAAI,cAAgB,GAGlEE,EAAqBF,GAA2CA,EAAMA,EAAI,WACpF,QAAQ,KAAM,EAAE,EAAc,GAGpBG,EAAeC,GAA6BA,EAAS,OAAOA,EAAS,YAAY,GAAG,EAAI,IAAM,GAAK,CAAC,EAEpGC,EAAmBL,GAAA,SAAwB,OAAAM,GAAAC,EAAAP,GAAA,YAAAA,EAAK,UAAU,SAAf,YAAAO,EAAuB,UAAvB,YAAAD,EAAA,KAAAC,EAAiC,mBAAoB,KAEhGC,EAAmB,CAACR,EAAaS,EAAcC,EAAK,GAAMC,EAAO,KACxE,CAACF,GAAQ,CAACT,GAAO,CAACS,EAAK,QAAU,CAACT,EAAI,OACjC,GAGLU,GAAMC,EACDN,EAAgBI,EAAK,aAAa,EAAE,SAASJ,EAAgBL,EAAI,YAAA,CAAa,CAAC,EAGpFU,EACKD,EAAK,YAAA,EAAc,SAAST,EAAI,aAAa,EAGlDW,EACKN,EAAgBI,CAAI,EAAE,SAASJ,EAAgBL,CAAG,CAAC,EAGrDS,EAAK,SAAST,CAAG,EAIbY,EAAgBZ,GAAwBA,EAAI,QAAQ,sCAAuC,MAAM,EAEjGa,EAAe,CAACJ,EAAcK,EAAc,EAAGC,EAAY,QAClE,CAACD,GAAeL,EAAK,QAAUK,EAC1BL,EAEF,GAAGA,EAAK,OAAO,EAAGK,CAAW,CAAC,GAAGC,CAAS,GAGtCC,EACRC,GAAuBA,GAAMZ,EAAgBY,GAAA,YAAAA,EAAI,oBAAoB,WAAW,MAAO,KAAK,WAAW,OAAQ,GAAG,EAE1GC,EACRD,GAAuBA,GAAM,mBAAmBD,EAAWC,CAAE,CAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("./core/constants/ui.constants.js"),z=require("./core/ui/components/atoms/text/anchor-link/AnchorLink.js"),P=require("./core/utils/array.js"),a=require("./core/utils/helpers/other.js"),b=require("./core/ui/components/container/layoutBox/LayoutBox.js"),y=require("./core/ui/components/atoms/button/Button.js"),B=require("./core/ui/components/container/CollapsibleContainer.js"),n=require("./core/utils/helpers/date.js"),I=require("./core/ui/components/error/ErrorBoundary.js"),C=require("./core/ui/components/dividers/DividerLine.js"),A=require("./core/ui/components/icon/IconWC.js"),d=require("./core/ui/components/field/Field.js"),N=require("./core/ui/components/molecules/layouts/FlowLayout.js"),q=require("./core/ui/components/atoms/text/Headline.js"),O=require("./core/ui/components/icon/Icon.js"),V=require("./core/ui/components/icon/IconBase.js"),_=require("./core/ui/components/container/layoutBox/layoutBox.types.js"),l=require("./core/ui/components/container/lazyComponent/LazyComponent.js"),k=require("./core/ui/components/atoms/text/Link.js"),R=require("./core/utils/appState/peregrineMQ/peregrineMQ.types.js"),o=require("./core/utils/helpers/valueOperations.js"),p=require("./core/ui/components/atoms/text/Paragraph.js"),M=require("./core/utils/appState/peregrineMQ/peregrineMQ.js"),H=require("./core/ui/components/molecules/popover/PopoverLite.js"),w=require("./core/ui/components/molecules/popover/popover.types.js"),j=require("./core/ui/components/molecules/popup/Popup.js"),Q=require("./core/ui/components/molecules/popup/popup.types.js"),W=require("./core/ui/components/container/ResizableContainer.js"),J=require("./core/ui/components/atoms/tag/Tag.js"),K=require("./core/ui/components/atoms/tag/tag.types.js"),G=require("./core/ui/components/atoms/text/Text.js"),f=require("./core/ui/components/atoms/textAndContent/TextAndContent.js"),s=require("./core/utils/appState/stateMachine/tiny-state-machine.base.js"),U=require("./core/ui/components/atoms/toggle/Toggle.js"),X=require("./core/ui/components/molecules/popover/Tooltip.js"),e=require("./core/utils/helpers/ui.js"),c=require("./core/utils/helpers/objectOperations.js"),r=require("./core/ui/utils/style.js"),T=require("./core/utils/appState/store/store.vanillajs.js"),F=require("./core/utils/helpers/cancelableDelayedFunction.js"),g=require("./core/utils/webComponents/webComponent.utils.js"),x=require("./core/utils/helpers/file.js"),h=require("./core/utils/helpers/text.js"),Z=require("./core/utils/appState/store/store.vanillajs.templates.js"),u=require("./core/utils/date.js"),v=require("./core/utils/helpers/emailMatcher.js"),t=require("./core/utils/helpers/textValueOperations.js"),$=require("./core/utils/helpers/deviceInfo.js"),m=require("./core/utils/helpers/birthnumberCZSKvalidator.js"),Y=require("./core/utils/helpers/birthnumber.validator.js"),E=require("./core/utils/keyExtractor.js"),L=require("./core/hooks/useOutsideClick.js"),i=require("./core/utils/helpers/fileValidator.js"),ee=require("./core/utils/appState/peregrineMQ/index.js"),te=require("./core/hooks/useAnimation.js"),re=require("./core/hooks/useApi.js"),ae=require("./core/hooks/useClassNames.js"),oe=require("./core/hooks/useIntersectionObserver.js"),ie=require("./core/hooks/useParseProps.js"),ne=require("./core/utils/appState/peregrineMQ/usePeregrineMQ.react.js"),se=require("./core/hooks/useResize.js"),D=require("./core/utils/appState/store/useStore.react.js"),ce=require("./core/hooks/useThemePreference.js"),le=require("./core/hooks/useSetTimeout.js"),ue=require("./core/hooks/useToggle.js"),me=require("./core/hooks/useToggle2.js");exports.Alerts=S.Alerts;exports.EventName=S.EventName;exports.KeyCode=S.KeyCode;exports.AnchorLink=z.AnchorLink;exports.ArrayFirst=P.ArrayFirst;exports.ArrayLast=P.ArrayLast;exports.AsyncFunctionTemplate=a.AsyncFunctionTemplate;exports.debounce=a.debounce;exports.delay=a.delay;exports.isFunctionAsync=a.isFunctionAsync;exports.memoize=a.memoize;exports.memoizeComplex=a.memoizeComplex;exports.memoizer=a.memoizer;exports.nestedTernary=a.nestedTernary;exports.BoxLayout=b.BoxLayout;exports.LayoutBox=b.LayoutBox;exports.Button=y.Button;exports.IconButton=y.IconButton;exports.keys=y.keys;exports.CollapsibleContainer=B.CollapsibleContainer;exports.DATE_FORMAT=n.DATE_FORMAT;exports.DATE_TIME_FORMAT=n.DATE_TIME_FORMAT;exports.formatDate=n.formatDate;exports.formatDateTime=n.formatDateTime;exports.formatDateToTimestamp=n.formatDateToTimestamp;exports.getDate=n.getDate;exports.DefaultErrorComponent=I.DefaultErrorComponent;exports.ErrorBoundary=I.ErrorBoundary;exports.DividerHorizontal=C.DividerHorizontal;exports.DividerLine=C.DividerLine;exports.DividerVertical=C.DividerVertical;Object.defineProperty(exports,"ESIcon",{enumerable:!0,get:()=>A.ESIcon});exports.ESIconBase=A.ESIconBase;exports.Field=d.Field;exports.Select=d.Select;exports.setIconColor=d.setIconColor;exports.setIconComponent=d.setIconComponent;exports.FlowLayout=N.FlowLayout;exports.Headline=q.Headline;exports.HeadlineSecondary=q.HeadlineSecondary;exports.HeadlineTertiary=q.HeadlineTertiary;exports.Icon=O.Icon;exports.IconBase=V.IconBase;exports.LayoutDirection=_.LayoutDirection;exports.LazyComponent=l.LazyComponent;exports.PendingBoundary=l.PendingBoundary;exports.createLazyModule=l.createLazyModule;exports.createLazyModuleWithStore=l.createLazyModuleWithStore;exports.wrapPromise=l.wrapPromise;exports.Link=k.Link;exports.NON_EXISTENT_CHANNEL=R.NON_EXISTENT_CHANNEL;exports.Operation=o.Operation;exports.decrementValue=o.decrementValue;exports.incerementValue=o.incerementValue;exports.numberDefined=o.numberDefined;exports.numberOperation=o.numberOperation;exports.restrictNumberInLimits=o.restrictNumberInLimits;exports.setValue=o.setValue;exports.Paragraph=p.Paragraph;exports.ParagraphBold=p.ParagraphBold;exports.ParagraphBoldSmall=p.ParagraphBoldSmall;exports.ParagraphSmall=p.ParagraphSmall;exports.PeregrineMQ=M.PeregrineMQ;exports.PeregrineMQClearError=M.PeregrineMQClearError;exports.Popover=H.Popover;exports.PopoverPlacement=w.PopoverPlacement;exports.Popup=j.Popup;exports.PopupAnimateVariant=Q.PopupAnimateVariant;exports.ResizableContainer=W.ResizableContainer;exports.Tag=J.Tag;exports.TagVariant=K.TagVariant;exports.Text=G.Text;exports.TextAndContent=f.TextAndContent;exports.TextAndIcons=f.TextAndIcons;exports.TinyStateMachine=s.TinyStateMachine;exports.TinyStateMachineEvent=s.TinyStateMachineEvent;exports.TinyStateMachineEventType=s.TinyStateMachineEventType;exports.TinyStateMachineState=s.TinyStateMachineState;exports.createStates=s.createStates;exports.stateIterator=s.stateIterator;exports.Toggle=U.Toggle;exports.Tooltip=X.Tooltip;exports.anchorClick=e.anchorClick;exports.classNames=e.classNames;exports.generateId=e.generateId;exports.getBaseThemes=e.getBaseThemes;exports.mapSerReplacer=e.mapSerReplacer;exports.noop=e.noop;exports.observeThemePreference=e.observeThemePreference;exports.parseProps=e.parseProps;exports.setThemeClassNames=e.setThemeClassNames;exports.switchColorTheme=e.switchColorTheme;exports.updateColorTheme=e.updateColorTheme;exports.arrayToObjectTree=c.arrayToObjectTree;exports.chunkArray=c.chunkArray;exports.duplicatesInArray=c.duplicatesInArray;exports.formatJsonString=c.formatJsonString;exports.formatObj=c.formatObj;exports.formatObj2=c.formatObj2;exports.calculateColors=r.calculateColors;exports.calculatePercColor=r.calculatePercColor;exports.convertHex=r.convertHex;exports.convertRGB=r.convertRGB;Object.defineProperty(exports,"defaultFontSize",{enumerable:!0,get:()=>r.defaultFontSize});exports.pxToRem=r.pxToRem;exports.resolveStyleValue=r.resolveStyleValue;exports.setDefaultFontSize=r.setDefaultFontSize;exports.toHex=r.toHex;exports.canSetStateMerge=T.canSetStateMerge;exports.createStore=T.createStore;exports.getSetStateMerge=T.getSetStateMerge;exports.shallowEqual=T.shallowEqual;exports.cancelableSetInterval=F.cancelableSetInterval;exports.cancelableSetTimeout=F.cancelableSetTimeout;exports.ced=g.ced;exports.createResolveAttribute=g.createResolveAttribute;exports.customElementDefine=g.customElementDefine;exports.resolveAttributes=g.resolveAttributes;exports.cleanCsvLines=x.cleanCsvLines;exports.formatFilePath=x.formatFilePath;exports.composeId=h.composeId;exports.defaultSanitizeConfig=h.defaultSanitizeConfig;exports.sanitizeHtml=h.sanitizeHtml;exports.createDataStore=Z.createDataStore;exports.dateRangeFormat=u.dateRangeFormat;exports.getDateTime=u.getDateTime;exports.getTimeFromNow=u.getTimeFromNow;exports.getTimeFromNowOriginal=u.getTimeFromNowOriginal;exports.getTimeTo=u.getTimeTo;exports.emailMatch=v.emailMatch;exports.emailMatcher=v.emailMatcher;exports.regexBuilder=v.regexBuilder;exports.escapeRegExp=t.escapeRegExp;exports.fileNameExt=t.fileNameExt;exports.findStringInText=t.findStringInText;exports.normalizeString=t.normalizeString;exports.removeWhitespaces=t.removeWhitespaces;exports.sanitizeId=t.sanitizeId;exports.sanitizePathId=t.sanitizePathId;exports.toLowerCase=t.toLowerCase;exports.toUpperCase=t.toUpperCase;exports.truncateText=t.truncateText;exports.getDeviceId=$.getDeviceId;exports.getMatch=m.getMatch;exports.isValidFormat=m.isValidFormat;exports.isValidModulo11=m.isValidModulo11;exports.parse=m.parse;exports.regex=m.regex;exports.isBirthNumberValid=Y.isBirthNumberValid;exports.keyExtractor=E.keyExtractor;exports.keyExtractorFunction=E.keyExtractorFunction;exports.outsideClickHandler=L.outsideClickHandler;exports.useOutsideClick=L.useOutsideClick;exports.parseCSVdata=i.parseCSVdata;exports.validateCSVFile=i.validateCSVFile;exports.validateCSVlines=i.validateCSVlines;exports.validateJSONFile=i.validateJSONFile;exports.validateLineCellTrimmed=i.validateLineCellTrimmed;exports.validateLineNumColumns=i.validateLineNumColumns;exports.validateSDFFile=i.validateSDFFile;exports.peregrineMQInstance=ee.peregrineMQInstance;exports.useAnimation=te.useAnimation;exports.useApi=re.useApi;exports.useClassNames=ae.useClassNames;exports.useIntersectionObserver=oe.useIntersectionObserver;exports.useParseProps=ie.useParseProps;exports.usePeregrineMQ=ne.usePeregrineMQ;exports.useResize=se.useResize;exports.useStore=D.useStore;exports.useStoreApi=D.useStoreApi;exports.useThemePreference=ce.useThemePreference;exports.useTimeoutFn=le.useTimeoutFn;exports.useToggle=ue.useToggle;exports.useToggle2=me.useToggle2;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const S=require("./core/constants/ui.constants.js"),z=require("./core/ui/components/atoms/text/anchor-link/AnchorLink.js"),P=require("./core/utils/array.js"),a=require("./core/utils/helpers/other.js"),b=require("./core/ui/components/container/layoutBox/LayoutBox.js"),y=require("./core/ui/components/atoms/button/Button.js"),B=require("./core/ui/components/container/CollapsibleContainer.js"),n=require("./core/utils/helpers/date.js"),I=require("./core/ui/components/error/ErrorBoundary.js"),C=require("./core/ui/components/dividers/DividerLine.js"),A=require("./core/ui/components/icon/IconWC.js"),d=require("./core/ui/components/field/Field.js"),N=require("./core/ui/components/molecules/layouts/FlowLayout.js"),q=require("./core/ui/components/atoms/text/Headline.js"),O=require("./core/ui/components/icon/Icon.js"),V=require("./core/ui/components/icon/IconBase.js"),_=require("./core/ui/components/container/layoutBox/layoutBox.types.js"),l=require("./core/ui/components/container/lazyComponent/LazyComponent.js"),k=require("./core/ui/components/atoms/text/Link.js"),R=require("./core/utils/appState/peregrineMQ/peregrineMQ.types.js"),o=require("./core/utils/helpers/valueOperations.js"),p=require("./core/ui/components/atoms/text/Paragraph.js"),f=require("./core/utils/appState/peregrineMQ/peregrineMQ.js"),H=require("./core/ui/components/molecules/popover/PopoverLite.js"),w=require("./core/ui/components/molecules/popover/popover.types.js"),j=require("./core/ui/components/molecules/popup/Popup.js"),Q=require("./core/ui/components/molecules/popup/popup.types.js"),W=require("./core/ui/components/container/ResizableContainer.js"),J=require("./core/ui/components/atoms/tag/Tag.js"),K=require("./core/ui/components/atoms/tag/tag.types.js"),G=require("./core/ui/components/atoms/text/Text.js"),F=require("./core/ui/components/atoms/textAndContent/TextAndContent.js"),s=require("./core/utils/appState/stateMachine/tiny-state-machine.base.js"),U=require("./core/ui/components/atoms/toggle/Toggle.js"),X=require("./core/ui/components/molecules/popover/Tooltip.js"),e=require("./core/utils/helpers/ui.js"),c=require("./core/utils/helpers/objectOperations.js"),r=require("./core/ui/utils/style.js"),T=require("./core/utils/appState/store/store.vanillajs.js"),E=require("./core/utils/helpers/cancelableDelayedFunction.js"),g=require("./core/utils/webComponents/webComponent.utils.js"),M=require("./core/utils/helpers/file.js"),h=require("./core/utils/helpers/text.js"),Z=require("./core/utils/appState/store/store.vanillajs.templates.js"),u=require("./core/utils/date.js"),v=require("./core/utils/helpers/emailMatcher.js"),t=require("./core/utils/helpers/textValueOperations.js"),$=require("./core/utils/helpers/deviceInfo.js"),m=require("./core/utils/helpers/birthnumberCZSKvalidator.js"),Y=require("./core/utils/helpers/birthnumber.validator.js"),x=require("./core/utils/keyExtractor.js"),L=require("./core/hooks/useOutsideClick.js"),i=require("./core/utils/helpers/fileValidator.js"),ee=require("./core/hooks/useAnimation.js"),te=require("./core/hooks/useApi.js"),re=require("./core/hooks/useClassNames.js"),ae=require("./core/hooks/useIntersectionObserver.js"),oe=require("./core/hooks/useParseProps.js"),ie=require("./core/utils/appState/peregrineMQ/usePeregrineMQ.react.js"),ne=require("./core/hooks/useResize.js"),D=require("./core/utils/appState/store/useStore.react.js"),se=require("./core/hooks/useThemePreference.js"),ce=require("./core/hooks/useSetTimeout.js"),le=require("./core/hooks/useToggle.js"),ue=require("./core/hooks/useToggle2.js");exports.Alerts=S.Alerts;exports.EventName=S.EventName;exports.KeyCode=S.KeyCode;exports.AnchorLink=z.AnchorLink;exports.ArrayFirst=P.ArrayFirst;exports.ArrayLast=P.ArrayLast;exports.AsyncFunctionTemplate=a.AsyncFunctionTemplate;exports.debounce=a.debounce;exports.delay=a.delay;exports.isFunctionAsync=a.isFunctionAsync;exports.memoize=a.memoize;exports.memoizeComplex=a.memoizeComplex;exports.memoizer=a.memoizer;exports.nestedTernary=a.nestedTernary;exports.BoxLayout=b.BoxLayout;exports.LayoutBox=b.LayoutBox;exports.Button=y.Button;exports.IconButton=y.IconButton;exports.keys=y.keys;exports.CollapsibleContainer=B.CollapsibleContainer;exports.DATE_FORMAT=n.DATE_FORMAT;exports.DATE_TIME_FORMAT=n.DATE_TIME_FORMAT;exports.formatDate=n.formatDate;exports.formatDateTime=n.formatDateTime;exports.formatDateToTimestamp=n.formatDateToTimestamp;exports.getDate=n.getDate;exports.DefaultErrorComponent=I.DefaultErrorComponent;exports.ErrorBoundary=I.ErrorBoundary;exports.DividerHorizontal=C.DividerHorizontal;exports.DividerLine=C.DividerLine;exports.DividerVertical=C.DividerVertical;Object.defineProperty(exports,"ESIcon",{enumerable:!0,get:()=>A.ESIcon});exports.ESIconBase=A.ESIconBase;exports.Field=d.Field;exports.Select=d.Select;exports.setIconColor=d.setIconColor;exports.setIconComponent=d.setIconComponent;exports.FlowLayout=N.FlowLayout;exports.Headline=q.Headline;exports.HeadlineSecondary=q.HeadlineSecondary;exports.HeadlineTertiary=q.HeadlineTertiary;exports.Icon=O.Icon;exports.IconBase=V.IconBase;exports.LayoutDirection=_.LayoutDirection;exports.LazyComponent=l.LazyComponent;exports.PendingBoundary=l.PendingBoundary;exports.createLazyModule=l.createLazyModule;exports.createLazyModuleWithStore=l.createLazyModuleWithStore;exports.wrapPromise=l.wrapPromise;exports.Link=k.Link;exports.NON_EXISTENT_CHANNEL=R.NON_EXISTENT_CHANNEL;exports.Operation=o.Operation;exports.decrementValue=o.decrementValue;exports.incerementValue=o.incerementValue;exports.numberDefined=o.numberDefined;exports.numberOperation=o.numberOperation;exports.restrictNumberInLimits=o.restrictNumberInLimits;exports.setValue=o.setValue;exports.Paragraph=p.Paragraph;exports.ParagraphBold=p.ParagraphBold;exports.ParagraphBoldSmall=p.ParagraphBoldSmall;exports.ParagraphSmall=p.ParagraphSmall;exports.PeregrineMQ=f.PeregrineMQ;exports.PeregrineMQClearError=f.PeregrineMQClearError;exports.Popover=H.Popover;exports.PopoverPlacement=w.PopoverPlacement;exports.Popup=j.Popup;exports.PopupAnimateVariant=Q.PopupAnimateVariant;exports.ResizableContainer=W.ResizableContainer;exports.Tag=J.Tag;exports.TagVariant=K.TagVariant;exports.Text=G.Text;exports.TextAndContent=F.TextAndContent;exports.TextAndIcons=F.TextAndIcons;exports.TinyStateMachine=s.TinyStateMachine;exports.TinyStateMachineEvent=s.TinyStateMachineEvent;exports.TinyStateMachineEventType=s.TinyStateMachineEventType;exports.TinyStateMachineState=s.TinyStateMachineState;exports.createStates=s.createStates;exports.stateIterator=s.stateIterator;exports.Toggle=U.Toggle;exports.Tooltip=X.Tooltip;exports.anchorClick=e.anchorClick;exports.classNames=e.classNames;exports.generateId=e.generateId;exports.getBaseThemes=e.getBaseThemes;exports.mapSerReplacer=e.mapSerReplacer;exports.noop=e.noop;exports.observeThemePreference=e.observeThemePreference;exports.parseProps=e.parseProps;exports.setThemeClassNames=e.setThemeClassNames;exports.switchColorTheme=e.switchColorTheme;exports.updateColorTheme=e.updateColorTheme;exports.arrayToObjectTree=c.arrayToObjectTree;exports.chunkArray=c.chunkArray;exports.duplicatesInArray=c.duplicatesInArray;exports.formatJsonString=c.formatJsonString;exports.formatObj=c.formatObj;exports.formatObj2=c.formatObj2;exports.calculateColors=r.calculateColors;exports.calculatePercColor=r.calculatePercColor;exports.convertHex=r.convertHex;exports.convertRGB=r.convertRGB;Object.defineProperty(exports,"defaultFontSize",{enumerable:!0,get:()=>r.defaultFontSize});exports.pxToRem=r.pxToRem;exports.resolveStyleValue=r.resolveStyleValue;exports.setDefaultFontSize=r.setDefaultFontSize;exports.toHex=r.toHex;exports.canSetStateMerge=T.canSetStateMerge;exports.createStore=T.createStore;exports.getSetStateMerge=T.getSetStateMerge;exports.shallowEqual=T.shallowEqual;exports.cancelableSetInterval=E.cancelableSetInterval;exports.cancelableSetTimeout=E.cancelableSetTimeout;exports.ced=g.ced;exports.createResolveAttribute=g.createResolveAttribute;exports.customElementDefine=g.customElementDefine;exports.resolveAttributes=g.resolveAttributes;exports.cleanCsvLines=M.cleanCsvLines;exports.formatFilePath=M.formatFilePath;exports.composeId=h.composeId;exports.defaultSanitizeConfig=h.defaultSanitizeConfig;exports.sanitizeHtml=h.sanitizeHtml;exports.createDataStore=Z.createDataStore;exports.dateRangeFormat=u.dateRangeFormat;exports.getDateTime=u.getDateTime;exports.getTimeFromNow=u.getTimeFromNow;exports.getTimeFromNowOriginal=u.getTimeFromNowOriginal;exports.getTimeTo=u.getTimeTo;exports.emailMatch=v.emailMatch;exports.emailMatcher=v.emailMatcher;exports.regexBuilder=v.regexBuilder;exports.escapeRegExp=t.escapeRegExp;exports.fileNameExt=t.fileNameExt;exports.findStringInText=t.findStringInText;exports.normalizeString=t.normalizeString;exports.removeWhitespaces=t.removeWhitespaces;exports.sanitizeId=t.sanitizeId;exports.sanitizePathId=t.sanitizePathId;exports.toLowerCase=t.toLowerCase;exports.toUpperCase=t.toUpperCase;exports.truncateText=t.truncateText;exports.getDeviceId=$.getDeviceId;exports.getMatch=m.getMatch;exports.isValidFormat=m.isValidFormat;exports.isValidModulo11=m.isValidModulo11;exports.parse=m.parse;exports.regex=m.regex;exports.isBirthNumberValid=Y.isBirthNumberValid;exports.keyExtractor=x.keyExtractor;exports.keyExtractorFunction=x.keyExtractorFunction;exports.outsideClickHandler=L.outsideClickHandler;exports.useOutsideClick=L.useOutsideClick;exports.parseCSVdata=i.parseCSVdata;exports.validateCSVFile=i.validateCSVFile;exports.validateCSVlines=i.validateCSVlines;exports.validateJSONFile=i.validateJSONFile;exports.validateLineCellTrimmed=i.validateLineCellTrimmed;exports.validateLineNumColumns=i.validateLineNumColumns;exports.validateSDFFile=i.validateSDFFile;exports.useAnimation=ee.useAnimation;exports.useApi=te.useApi;exports.useClassNames=re.useClassNames;exports.useIntersectionObserver=ae.useIntersectionObserver;exports.useParseProps=oe.useParseProps;exports.usePeregrineMQ=ie.usePeregrineMQ;exports.useResize=ne.useResize;exports.useStore=D.useStore;exports.useStoreApi=D.useStoreApi;exports.useThemePreference=se.useThemePreference;exports.useTimeoutFn=ce.useTimeoutFn;exports.useToggle=le.useToggle;exports.useToggle2=ue.useToggle2;
2
2
  //# sourceMappingURL=index.js.map
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"peregrineMQ.js","sources":["../../../../../../../../src/core/utils/appState/peregrineMQ/peregrineMQ.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid'\n\nimport {\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 || uuidv4()\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","uuidv4","acc"],"mappings":"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"}
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":";;;;AASO,MAAMA,UAA8B,MAAM;AAAA,EAC/C,cAAc;AACZ,UAAM,0FAA0F,GAChG,KAAK,OAAO;AAAA,EACd;AACF;AAKO,MAAMC,EAAsC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+FjD,YAAYC,GAAaC,GAAiB;AA9FlC,IAAAC,EAAA;AAEA,IAAAA,EAAA,gBAAiB;AAAA,MACvB,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,YAAY;AAAA,IAAA;AAMN;AAAA;AAAA;AAAA,IAAAA,EAAA,sCAA4C,IAAA;AAK5C;AAAA;AAAA;AAAA,IAAAA,EAAA,uCAAiD,IAAA;AAOjD;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,EAAA,qBAAc,CAACC,GAAoBC,MAA0B;AACnE,YAAMC,IAAW,KAAK,UAAU,IAAIF,CAAQ,GACtCG,IAAiB,KAAK,SAAS,IAAIF,CAAO;AAEhD,MAAIE,MACED,IACFA,EAAS,KAAKC,CAAc,IAE5B,KAAK,UAAU,IAAIH,GAAU,CAACG,CAAc,CAAC;AAAA,IAGnD;AAQQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAJ,EAAA,wBAAiB,CAACC,MAA6B;AACrD,YAAMI,IAAwB,KAAK,UAAU,IAAIJ,CAAQ;AACzD,UAAIK,IAAU;AAGd,iBAAWC,KAAwBF,KAAyB;AAE1D,YADAC,IAAU,CAACC,EAAqB,IAAIN,CAAQ,GACxC,CAACK;AACH;AAIJ,MAAIA,KACF,KAAK,UAAU,OAAOL,CAAQ;AAAA,IAElC;AASQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAD,EAAA,0BAAmB,CACzBE,GAAiBM,GAAmBC,MACL;AAC/B,YAAML,IAAiB,KAAK,SAAS,IAAIF,CAAO;AAEhD,UAAI,CAACE;AACH,eAAOM;AAGT,YAAMC,IAAWP,EAAe,OAAO,QAAQ,EAAA;AAC/C,UAAIQ,IAAiBD,EAAS,KAAA,EAAO;AAErC,YAAME,IAAU,CAAA;AAGhB,aAAOD;AAEL,QAAAC,EAAQ,KAAKD,EAAeV,GAASO,CAAuB,CAAC,GAC7DG,IAAiBD,EAAS,OAAO;AAEnC,cAAOE,KAAA,gBAAAA,EAAS,YAAW,IAAIA,EAAQ,CAAC,IAAIA;AAAA,IAC9C;AA0BA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAb,EAAA,mBAAY,CAACD,MAGR;AACH,WAAK,SAASA;AACd,YAAM,EAAE,gBAAAe,GAAgB,eAAAC,EAAA,IAAkBhB;AAE1C,UAAIiB;AAEJ,MAAIF,MACFE,IAAuB,YAAY,MAAM;AACvC,aAAK,MAAA;AAAA,MACP,GAAGD,CAAa;AAIlB,YAAME,IAAwB;AAE9B,aAAO;AAAA,QACL,GAAIH,IACA;AAAA,UACA,oBAAoB,MAAY;AAC9B,0BAAcE,CAAoB;AAAA,UACpC;AAAA,UACA,sBAAsB,MAAY;AAChC,0BAAcA,CAAoB,GAClCA,IAAuB,YAAY,MAAM;AACvC,cAAAC,EAAS,MAAA;AAAA,YACX,GAAGF,CAAa;AAAA,UAClB;AAAA,QAAA,IAEA,CAAA;AAAA,MAAC;AAAA,IAET;AAMA;AAAA;AAAA;AAAA;AAAA,IAAAf,EAAA,qBAAc,MAAgB,CAAC,GAAG,KAAK,SAAS,MAAM;AAMtD;AAAA;AAAA;AAAA;AAAA,IAAAA,EAAA,eAAQ,MAAgB;;AACtB,YAAMW,IAAW,KAAK,SAAS,OAAO,QAAQ,EAAA;AAC9C,UAAIP,IAAiBO,EAAS,KAAA,EAAO;AACrC,YAAMO,IAA2B,CAAA;AAGjC,aAAOd;AACL,UAAIe,IAAAf,EAAe,CAAC,MAAhB,gBAAAe,EAAmB,UAAS,MAC9BD,EAAe,KAAKd,EAAe,CAAC,CAAC,GACrC,KAAK,SAAS,OAAOA,EAAe,CAAC,CAAC,IAExCA,IAAiBO,EAAS,OAAO;AAGnC,aAAOO;AAAA,IACT;AAOA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAlB,EAAA,uBAAgB,CAACE,MAA6B;AAC5C,YAAME,IAAiB,KAAK,SAAS,IAAIF,CAAO;AAEhD,UAAIE,KAAkBA,EAAe,OAAO,GAAG;AAC7C,cAAMgB,IAAmB,CAAC,GAAGhB,KAAkB,EAAE;AAEjD,QAAAA,EAAe,MAAA;AAEf,YAAIiB,IAAQD,EAAiB;AAG7B,eAAOC;AACL,eAAK,eAAeD,EAAiBC,CAAK,CAAC;AAAA,MAE/C;AAEA,aAAO,KAAK,SAAS,OAAOnB,CAAO;AAAA,IACrC;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAF,EAAA,iBAAU,CAAIE,GAAiBO,MAAgC;AAC7D,UAAIP,EAAQ,SAAS,GAAG,GAAG;AACzB,cAAMoB,IAAiBpB,EAAQ,MAAM,GAAG;AAExC,YAAI,EAAE,QAAAqB,MAAWD,GACbE,IAAK;AACT,cAAMX,IAAU,CAAA;AAGhB,eAAOU,OAAU;AAEf,gBAAME,IAAS,KAAK;AAAA,YAClBH,EAAe,MAAM,GAAGE,IAAK,CAAC,EAAE,KAAK,GAAG;AAAA,YACxCD,MAAWD,EAAe,SAAS;AAAA,YACnCb;AAAA,UAAA;AAGF,UAAAe,KAAM,GACNX,EAAQ,KAAKY,CAAM;AAAA,QACrB;AACA,eAAOZ;AAAA,MACT;AAEA,aAAO,KAAK,iBAAiBX,GAAS,IAAOO,CAAI;AAAA,IACnD;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAT,EAAA,mBAAY,CAACE,GAAiBD,MAAsC;AAClE,YAAMyB,IAAkB,KAAK,SAAS,IAAIxB,CAAO;AAEjD,aAAIwB,IACFA,EAAgB,IAAIzB,CAAQ,IAE5B,KAAK,SAAS,IAAIC,GAAS,oBAAI,IAAI,CAACD,CAAQ,CAAC,CAAC,GAGhD,KAAK,YAAYA,GAAUC,CAAO,GAE3B,MAAM,KAAK,YAAYD,GAAU,EAAE,SAAAC,GAAS,OAAO,IAAM;AAAA,IAClE;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAF,EAAA,qBAAc,CAACC,GAAoB0B,MAA0C;AAC3E,YAAM,EAAE,SAAAzB,GAAS,OAAA0B,EAAA,IAAUD,KAAW,CAAA;AAEtC,UAAIE,IAAe;AAEnB,UAAI3B,GAAS;AACX,cAAM4B,IAAgB,KAAK,SAAS,IAAI5B,CAAO;AAE/C,eAAA2B,IAAeC,IAAgBA,EAAc,OAAO7B,CAAQ,IAAI,IAC5D2B,MAASE,KAAA,gBAAAA,EAAe,UAAS,KACnC,KAAK,SAAS,OAAO5B,CAAO,GAG9B,KAAK,eAAeD,CAAQ,GAErB4B;AAAA,MACT;AAEA,YAAME,IAAqB,KAAK,UAAU,IAAI9B,CAAQ,KAAK,CAAA;AAK3D,iBAAW6B,KAAiBC;AAC1B,QAAAF,IAAeC,EAAc,OAAO7B,CAAQ,GAExC2B,KAASE,EAAc,SAAS,KAClC,KAAK,MAAA;AAIT,kBAAK,UAAU,OAAO7B,CAAQ,GAEvB4B;AAAA,IACT;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA7B,EAAA,sBAAe,CAACC,GAAoBC,MAA8B;AAChE,UAAIA,GAAS;AACX,cAAMwB,IAAkB,KAAK,SAAS,IAAIxB,CAAO;AAEjD,eAAOwB,IAAkBA,EAAgB,IAAIzB,CAAQ,IAAI;AAAA,MAC3D;AAEA,aAAO,KAAK,UAAU,IAAIA,CAAQ;AAAA,IACpC;AAMA;AAAA;AAAA;AAAA;AAAA,IAAAD,EAAA,eAAQ,MAAY;AAClB,UAAI,KAAK,OAAO;AACd,aAAK,SAAS,MAAA,GACd,KAAK,UAAU,MAAA;AAAA;AAEf,cAAM,IAAIJ,EAAA;AAAA,IAEd;AAMA;AAAA;AAAA;AAAA;AAAA,IAAAI,EAAA,eAAQ,MAAc,KAAK;AAvOzB,SAAK,KAAKF,MAAO,OAAO,SAAW,OAAe,OAAO,aACrD,OAAO,WAAA,IACP,GAAG,KAAK,KAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,KACxD,KAAK,UAAUC,KAAU,EAAE;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,SAAiB;AACnB,WAAO,CAAC,GAAG,KAAK,SAAS,QAAQ,EAAE,OAAO,CAACiC,GAAKN,MAAoBM,IAAMN,EAAgB,MAAM,CAAC;AAAA,EACnG;AA6NF;"}
@@ -1,22 +1,6 @@
1
- Object.defineProperty(Array.prototype, "last", {
2
- get() {
3
- return this[this.length - 1];
4
- },
5
- set(t) {
6
- return this[this.length - 1] = t, this;
7
- }
8
- });
9
- Object.defineProperty(Array.prototype, "first", {
10
- get() {
11
- return this[0];
12
- },
13
- set(t) {
14
- return this[0] = t, this;
15
- }
16
- });
17
- const r = Array.prototype.first, e = Array.prototype.last;
1
+ const r = (t) => t[0], s = (t) => t[t.length - 1];
18
2
  export {
19
3
  r as ArrayFirst,
20
- e as ArrayLast
4
+ s as ArrayLast
21
5
  };
22
6
  //# sourceMappingURL=array.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sources":["../../../../../../src/core/utils/array.ts"],"sourcesContent":["/* eslint-disable no-extend-native */\nObject.defineProperty(Array.prototype, 'last', {\n get() { return this[this.length - 1] },\n set(v) { this[this.length - 1] = v; return this },\n})\n\n\nObject.defineProperty(Array.prototype, 'first', {\n get() { return this[0] },\n set(v) { this[0] = v; return this },\n})\n\n// redeclare array, to have last, first accessors\ndeclare global {\n interface Array<T> {\n last: T | undefined\n first: T | undefined\n }\n}\n\nexport default Array.prototype\n\n\nexport const ArrayFirst = Array.prototype.first\nexport const ArrayLast = Array.prototype.last\n"],"names":["v","ArrayFirst","ArrayLast"],"mappings":"AACA,OAAO,eAAe,MAAM,WAAW,QAAQ;AAAA,EAC7C,MAAM;AAAE,WAAO,KAAK,KAAK,SAAS,CAAC;AAAA,EAAE;AAAA,EACrC,IAAIA,GAAG;AAAE,gBAAK,KAAK,SAAS,CAAC,IAAIA,GAAU;AAAA,EAAK;AAClD,CAAC;AAGD,OAAO,eAAe,MAAM,WAAW,SAAS;AAAA,EAC9C,MAAM;AAAE,WAAO,KAAK,CAAC;AAAA,EAAE;AAAA,EACvB,IAAIA,GAAG;AAAE,gBAAK,CAAC,IAAIA,GAAU;AAAA,EAAK;AACpC,CAAC;AAaM,MAAMC,IAAa,MAAM,UAAU,OAC7BC,IAAY,MAAM,UAAU;"}
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;"}
@@ -1,8 +1,8 @@
1
1
  import e from "dayjs";
2
- import f from "dayjs/plugin/relativeTime";
3
- import u from "dayjs/plugin/updateLocale";
4
- import p from "dayjs/plugin/customParseFormat";
5
- const M = {
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
6
  thresholds: [
7
7
  { l: "s", r: 1 },
8
8
  { l: "m", r: 1 },
@@ -16,7 +16,7 @@ const M = {
16
16
  { l: "y", r: 1 },
17
17
  { l: "yy", d: "year" }
18
18
  ]
19
- }, l = {
19
+ }, c = {
20
20
  future: "in %s",
21
21
  past: "%s ago",
22
22
  s: "now",
@@ -46,59 +46,55 @@ const M = {
46
46
  y: "rok",
47
47
  yy: "%d roky"
48
48
  };
49
- e.extend(p);
50
- e.extend(f, M);
51
- e.extend(u);
52
- e.updateLocale("cz", {
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", {
53
58
  relativeTime: {
54
- ...y
59
+ ...t === "cz" ? y : c,
60
+ ...T
55
61
  }
56
- });
57
- e.updateLocale("en", {
58
- relativeTime: {
59
- ...l
60
- }
61
- });
62
- const z = (t, o) => (e.updateLocale("en", {
63
- relativeTime: {
64
- ...o === "cz" ? y : l,
65
- ...f
66
- }
67
- }), e(t, void 0).fromNow(!0)), x = (t, o) => T({ ...o, from: !0, value: t }), $ = (t, o) => T({ ...o, to: !0, value: t }), T = ({
68
- value: t,
69
- valueFormat: o,
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,
70
65
  formatString: a,
71
66
  language: r = "en",
72
- relativeTime: i,
73
- from: m,
67
+ relativeTime: m,
68
+ from: i,
74
69
  to: d,
75
70
  shouldAddDay: n = !1,
76
71
  shouldSubtractDay: s = !1,
77
72
  showPreffix: h = !1
78
73
  }) => {
79
- if (e.updateLocale("en", {
74
+ if (f(), e.updateLocale("en", {
80
75
  relativeTime: {
81
- ...r === "cz" ? y : l,
82
- ...i
76
+ ...r === "cz" ? y : c,
77
+ ...m
83
78
  }
84
- }), e.locale(r), !m && d) {
85
- const c = e(t, o || void 0).add(n ? 1 : 0, "day");
86
- return e(/* @__PURE__ */ new Date()).locale(r).to(c, !h);
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);
87
82
  }
88
- if (m && !d) {
89
- const c = e(t, o || void 0).subtract(s ? 1 : 0, "day");
90
- return e(c, o || void 0).locale(r).fromNow(!h);
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);
91
86
  }
92
- return e(t, o || void 0).locale(r).format(a);
93
- }, k = (t, o, a, r, i = " - ", m = "month") => {
94
- const d = e(t), n = e(o), s = d.diff(n, m);
95
- return `${d.format(s === 0 ? a : r)}${i}${n.format(r)}`;
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)}`;
96
92
  };
97
93
  export {
98
94
  k as dateRangeFormat,
99
- T as getDateTime,
100
- x as getTimeFromNow,
101
- z as getTimeFromNowOriginal,
95
+ p as getDateTime,
96
+ D as getTimeFromNow,
97
+ x as getTimeFromNowOriginal,
102
98
  $ as getTimeTo
103
99
  };
104
100
  //# sourceMappingURL=date.js.map