tiny-essentials 1.28.19 → 1.29.0

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 (555) hide show
  1. package/README.md +1 -1
  2. package/changelog/1/28/19.md +24 -0
  3. package/changelog/1/29/0.md +58 -0
  4. package/dist/v1/ColorSafeStringify.min.js +1 -1
  5. package/dist/v1/TinyAdvancedRaffle.min.js +1 -1
  6. package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
  7. package/dist/v1/TinyAnalogClock.min.js +1 -1
  8. package/dist/v1/TinyArrayComparator.min.js +1 -1
  9. package/dist/v1/TinyArrayPaginator.min.js +1 -1
  10. package/dist/v1/TinyBasicsEs.min.js +1 -1
  11. package/dist/v1/TinyBrowserMonitor.min.js +1 -0
  12. package/dist/v1/TinyClassManager.min.js +1 -1
  13. package/dist/v1/TinyClipboard.min.js +1 -1
  14. package/dist/v1/TinyCloner.min.js +1 -0
  15. package/dist/v1/TinyColorConverter.min.js +1 -1
  16. package/dist/v1/TinyColorValidator.min.js +1 -1
  17. package/dist/v1/TinyCookieConsent.min.js +1 -1
  18. package/dist/v1/TinyDayNightCycle.min.js +1 -1
  19. package/dist/v1/TinyDebugger.min.js +1 -1
  20. package/dist/v1/TinyDomReadyManager.min.js +1 -1
  21. package/dist/v1/TinyDragDropDetector.min.js +1 -1
  22. package/dist/v1/TinyDragger.min.js +1 -1
  23. package/dist/v1/TinyElementObserver.min.js +1 -1
  24. package/dist/v1/TinyEssentials.min.js +1 -1
  25. package/dist/v1/TinyGamepad.min.js +1 -1
  26. package/dist/v1/TinyHtml.min.js +1 -1
  27. package/dist/v1/TinyHtmlTagRegexBuilder.min.js +1 -0
  28. package/dist/v1/TinyHttpResponseRegistry.min.js +1 -0
  29. package/dist/v1/TinyI18.min.js +1 -1
  30. package/dist/v1/TinyIframeEvents.min.js +1 -1
  31. package/dist/v1/TinyInventory.min.js +1 -1
  32. package/dist/v1/TinyInventoryTrader.min.js +1 -1
  33. package/dist/v1/TinyLevelUp.min.js +1 -1
  34. package/dist/v1/TinyLoadingScreen.min.js +1 -1
  35. package/dist/v1/TinyLocalStorage.min.js +1 -1
  36. package/dist/v1/TinyMaInSys.min.js +1 -1
  37. package/dist/v1/TinyMapCache.min.js +1 -0
  38. package/dist/v1/TinyMediaPlayer.min.js +1 -1
  39. package/dist/v1/TinyNeedBar.min.js +1 -1
  40. package/dist/v1/TinyNewWinEvents.min.js +1 -1
  41. package/dist/v1/TinyNotificationAdapter.min.js +1 -0
  42. package/dist/v1/TinyNotifications.min.js +1 -1
  43. package/dist/v1/TinyNotifyCenter.min.js +1 -1
  44. package/dist/v1/TinyOPFSFileSystem.min.js +1 -0
  45. package/dist/v1/TinyPasswordValidator.min.js +1 -0
  46. package/dist/v1/TinyPluginPackage.min.js +1 -0
  47. package/dist/v1/TinyPromiseQueue.min.js +1 -1
  48. package/dist/v1/TinyPushManager.min.js +1 -0
  49. package/dist/v1/TinyPushPayload.min.js +1 -0
  50. package/dist/v1/TinyPushRouter.min.js +1 -0
  51. package/dist/v1/TinyRadioFm.min.js +1 -1
  52. package/dist/v1/TinyRateLimiter.min.js +1 -1
  53. package/dist/v1/TinyRegexEs.min.js +1 -0
  54. package/dist/v1/TinyRouter.min.js +1 -0
  55. package/dist/v1/TinyServiceWorker.min.js +1 -0
  56. package/dist/v1/TinyServiceWorkerEngine.min.js +1 -0
  57. package/dist/v1/TinySetMapPackage.min.js +1 -0
  58. package/dist/v1/TinySimpleDice.min.js +1 -1
  59. package/dist/v1/TinySmartScroller.min.js +1 -1
  60. package/dist/v1/TinyStorageBucketFileSystem.min.js +1 -0
  61. package/dist/v1/TinyTextDiffer.min.js +1 -1
  62. package/dist/v1/TinyTextRangeEditor.min.js +1 -1
  63. package/dist/v1/TinyTextarea.min.js +1 -1
  64. package/dist/v1/TinyThrottledApi.min.js +1 -0
  65. package/dist/v1/TinyTimeout.min.js +1 -1
  66. package/dist/v1/TinyToastNotify.min.js +1 -1
  67. package/dist/v1/TinyUploadClicker.min.js +1 -1
  68. package/dist/v1/TinyUriParser.min.js +1 -0
  69. package/dist/v1/TinyVersion.min.js +1 -0
  70. package/dist/v1/TinyWebWorker.min.js +1 -0
  71. package/dist/v1/TinyWebWorkerEngine.min.js +1 -0
  72. package/dist/v1/UltraRandomMsgGen.min.js +1 -1
  73. package/dist/v1/basics/array.cjs +2 -2
  74. package/dist/v1/basics/array.d.mts +2 -0
  75. package/dist/v1/basics/array.d.mts.map +1 -1
  76. package/dist/v1/basics/array.mjs +2 -1
  77. package/dist/v1/basics/browserDetector.cjs +37 -12
  78. package/dist/v1/basics/browserDetector.d.mts +8 -0
  79. package/dist/v1/basics/browserDetector.d.mts.map +1 -1
  80. package/dist/v1/basics/browserDetector.mjs +32 -13
  81. package/dist/v1/basics/crypto.cjs +23 -0
  82. package/dist/v1/basics/crypto.d.mts +10 -0
  83. package/dist/v1/basics/crypto.d.mts.map +1 -0
  84. package/dist/v1/basics/crypto.mjs +18 -0
  85. package/dist/v1/basics/html.cjs +0 -3
  86. package/dist/v1/basics/html.d.mts.map +1 -1
  87. package/dist/v1/basics/html.mjs +0 -2
  88. package/dist/v1/basics/index.cjs +8 -1
  89. package/dist/v1/basics/index.d.mts +6 -5
  90. package/dist/v1/basics/index.d.mts.map +1 -1
  91. package/dist/v1/basics/index.mjs +6 -5
  92. package/dist/v1/basics/objChecker.cjs +88 -0
  93. package/dist/v1/basics/objChecker.d.mts +26 -0
  94. package/dist/v1/basics/objChecker.d.mts.map +1 -1
  95. package/dist/v1/basics/objChecker.mjs +74 -0
  96. package/dist/v1/basics/objFilter.cjs +234 -93
  97. package/dist/v1/basics/objFilter.d.mts +96 -22
  98. package/dist/v1/basics/objFilter.d.mts.map +1 -1
  99. package/dist/v1/basics/objFilter.mjs +216 -92
  100. package/dist/v1/basics/promiseUtils.cjs +48 -12
  101. package/dist/v1/basics/promiseUtils.d.mts +45 -12
  102. package/dist/v1/basics/promiseUtils.d.mts.map +1 -1
  103. package/dist/v1/basics/promiseUtils.mjs +47 -12
  104. package/dist/v1/basics/text.cjs +0 -12
  105. package/dist/v1/basics/text.d.mts +0 -10
  106. package/dist/v1/basics/text.d.mts.map +1 -1
  107. package/dist/v1/basics/text.mjs +0 -10
  108. package/dist/v1/index.cjs +88 -3
  109. package/dist/v1/index.d.mts +31 -6
  110. package/dist/v1/index.d.mts.map +1 -1
  111. package/dist/v1/index.mjs +32 -7
  112. package/dist/v1/jsdoc/EventEmitter.cjs +4 -0
  113. package/dist/v1/jsdoc/EventEmitter.d.mts +33 -0
  114. package/dist/v1/jsdoc/EventEmitter.d.mts.map +1 -0
  115. package/dist/v1/jsdoc/EventEmitter.mjs +18 -0
  116. package/dist/v1/libs/array/TinyArrayComparator.cjs +240 -25
  117. package/dist/v1/libs/array/TinyArrayComparator.d.mts +130 -22
  118. package/dist/v1/libs/array/TinyArrayComparator.d.mts.map +1 -1
  119. package/dist/v1/libs/array/TinyArrayComparator.mjs +210 -24
  120. package/dist/v1/libs/fs/constants.cjs +74 -0
  121. package/dist/v1/libs/fs/constants.d.mts +22 -0
  122. package/dist/v1/libs/fs/constants.d.mts.map +1 -0
  123. package/dist/v1/libs/fs/constants.mjs +53 -0
  124. package/dist/v1/libs/fs/encoding.cjs +118 -0
  125. package/dist/v1/libs/fs/encoding.d.mts +50 -0
  126. package/dist/v1/libs/fs/encoding.d.mts.map +1 -0
  127. package/dist/v1/libs/fs/encoding.mjs +102 -0
  128. package/dist/v1/libs/fs/error.cjs +188 -0
  129. package/dist/v1/libs/fs/error.d.mts +105 -0
  130. package/dist/v1/libs/fs/error.d.mts.map +1 -0
  131. package/dist/v1/libs/fs/error.mjs +158 -0
  132. package/dist/v1/libs/fs/handle.cjs +121 -0
  133. package/dist/v1/libs/fs/handle.d.mts +56 -0
  134. package/dist/v1/libs/fs/handle.d.mts.map +1 -0
  135. package/dist/v1/libs/fs/handle.mjs +100 -0
  136. package/dist/v1/libs/fs/index.cjs +700 -0
  137. package/dist/v1/libs/fs/index.d.mts +377 -0
  138. package/dist/v1/libs/fs/index.d.mts.map +1 -0
  139. package/dist/v1/libs/fs/index.mjs +630 -0
  140. package/dist/v1/libs/fs/path.cjs +234 -0
  141. package/dist/v1/libs/fs/path.d.mts +176 -0
  142. package/dist/v1/libs/fs/path.d.mts.map +1 -0
  143. package/dist/v1/libs/fs/path.mjs +197 -0
  144. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.cjs +202 -0
  145. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts +121 -0
  146. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts.map +1 -0
  147. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.mjs +172 -0
  148. package/dist/v1/libs/fs/plugins/OPFS/index.cjs +334 -0
  149. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts +98 -0
  150. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts.map +1 -0
  151. package/dist/v1/libs/fs/plugins/OPFS/index.mjs +300 -0
  152. package/dist/v1/libs/fs/stats.cjs +245 -0
  153. package/dist/v1/libs/fs/stats.d.mts +226 -0
  154. package/dist/v1/libs/fs/stats.d.mts.map +1 -0
  155. package/dist/v1/libs/fs/stats.mjs +197 -0
  156. package/dist/v1/libs/html/events/TinyIframeEvents.cjs +10 -1
  157. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts +9 -2
  158. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts.map +1 -1
  159. package/dist/v1/libs/html/events/TinyIframeEvents.mjs +8 -1
  160. package/dist/v1/libs/html/events/TinyNewWinEvents.cjs +14 -3
  161. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts +21 -5
  162. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts.map +1 -1
  163. package/dist/v1/libs/html/events/TinyNewWinEvents.mjs +12 -3
  164. package/dist/v1/libs/html/scroll/TinySmartScroller.cjs +13 -1
  165. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts +29 -2
  166. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts.map +1 -1
  167. package/dist/v1/libs/html/scroll/TinySmartScroller.mjs +11 -1
  168. package/dist/v1/libs/math/TinyAdvancedRaffle.cjs +13 -1
  169. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts +32 -2
  170. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts.map +1 -1
  171. package/dist/v1/libs/math/TinyAdvancedRaffle.mjs +11 -1
  172. package/dist/v1/libs/math/TinyTimeout.cjs +0 -14
  173. package/dist/v1/libs/math/TinyTimeout.d.mts +0 -11
  174. package/dist/v1/libs/math/TinyTimeout.d.mts.map +1 -1
  175. package/dist/v1/libs/math/TinyTimeout.mjs +0 -13
  176. package/dist/v1/libs/media/TinyMediaPlayer/index.cjs +25 -1
  177. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts +35 -2
  178. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts.map +1 -1
  179. package/dist/v1/libs/media/TinyMediaPlayer/index.mjs +23 -1
  180. package/dist/v1/libs/media/TinyMediaPlayer.cjs +2 -2
  181. package/dist/v1/libs/media/TinyMediaPlayer.d.mts +2 -2
  182. package/dist/v1/libs/media/TinyMediaPlayer.d.mts.map +1 -1
  183. package/dist/v1/libs/media/TinyMediaPlayer.mjs +2 -2
  184. package/dist/v1/libs/media/TinyRadioFm.cjs +19 -1
  185. package/dist/v1/libs/media/TinyRadioFm.d.mts +78 -2
  186. package/dist/v1/libs/media/TinyRadioFm.d.mts.map +1 -1
  187. package/dist/v1/libs/media/TinyRadioFm.mjs +17 -1
  188. package/dist/v1/libs/plugin/TinyPlugin.cjs +1630 -0
  189. package/dist/v1/libs/plugin/TinyPlugin.d.mts +753 -0
  190. package/dist/v1/libs/plugin/TinyPlugin.d.mts.map +1 -0
  191. package/dist/v1/libs/plugin/TinyPlugin.mjs +1376 -0
  192. package/dist/v1/libs/plugin/TinyVersion.cjs +204 -0
  193. package/dist/v1/libs/plugin/TinyVersion.d.mts +70 -0
  194. package/dist/v1/libs/plugin/TinyVersion.d.mts.map +1 -0
  195. package/dist/v1/libs/plugin/TinyVersion.mjs +179 -0
  196. package/dist/v1/libs/router/TinyRouter.cjs +661 -0
  197. package/dist/v1/libs/router/TinyRouter.d.mts +320 -0
  198. package/dist/v1/libs/router/TinyRouter.d.mts.map +1 -0
  199. package/dist/v1/libs/router/TinyRouter.mjs +572 -0
  200. package/dist/v1/libs/storage/TinyLocalStorage.cjs +20 -1
  201. package/dist/v1/libs/storage/TinyLocalStorage.d.mts +64 -2
  202. package/dist/v1/libs/storage/TinyLocalStorage.d.mts.map +1 -1
  203. package/dist/v1/libs/storage/TinyLocalStorage.mjs +18 -1
  204. package/dist/v1/libs/storage/TinyMapCache.cjs +373 -0
  205. package/dist/v1/libs/storage/TinyMapCache.d.mts +274 -0
  206. package/dist/v1/libs/storage/TinyMapCache.d.mts.map +1 -0
  207. package/dist/v1/libs/storage/TinyMapCache.mjs +333 -0
  208. package/dist/v1/libs/storage/TinySetMapDatabase.cjs +1167 -0
  209. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts +603 -0
  210. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts.map +1 -0
  211. package/dist/v1/libs/storage/TinySetMapDatabase.mjs +1059 -0
  212. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.cjs +126 -0
  213. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts +132 -0
  214. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts.map +1 -0
  215. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.mjs +109 -0
  216. package/dist/v1/libs/sw/browser/TinyPushManager.cjs +310 -0
  217. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts +168 -0
  218. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts.map +1 -0
  219. package/dist/v1/libs/sw/browser/TinyPushManager.mjs +264 -0
  220. package/dist/v1/libs/sw/browser/TinyServiceWorker.cjs +1060 -0
  221. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts +348 -0
  222. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts.map +1 -0
  223. package/dist/v1/libs/sw/browser/TinyServiceWorker.mjs +933 -0
  224. package/dist/v1/libs/sw/browser/plugins/TabManager.cjs +315 -0
  225. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts +178 -0
  226. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts.map +1 -0
  227. package/dist/v1/libs/sw/browser/plugins/TabManager.mjs +274 -0
  228. package/dist/v1/libs/sw/browser/utils.cjs +28 -0
  229. package/dist/v1/libs/sw/browser/utils.d.mts +8 -0
  230. package/dist/v1/libs/sw/browser/utils.d.mts.map +1 -0
  231. package/dist/v1/libs/sw/browser/utils.mjs +21 -0
  232. package/dist/v1/libs/sw/service/TinyPushRouter.cjs +222 -0
  233. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts +138 -0
  234. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts.map +1 -0
  235. package/dist/v1/libs/sw/service/TinyPushRouter.mjs +201 -0
  236. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.cjs +3016 -0
  237. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts +993 -0
  238. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts.map +1 -0
  239. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.mjs +2558 -0
  240. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.cjs +88 -0
  241. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts +32 -0
  242. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts.map +1 -0
  243. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.mjs +69 -0
  244. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.cjs +112 -0
  245. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts +31 -0
  246. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts.map +1 -0
  247. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.mjs +91 -0
  248. package/dist/v1/libs/sw/service/plugins/Ping.cjs +32 -0
  249. package/dist/v1/libs/sw/service/plugins/Ping.d.mts +9 -0
  250. package/dist/v1/libs/sw/service/plugins/Ping.d.mts.map +1 -0
  251. package/dist/v1/libs/sw/service/plugins/Ping.mjs +25 -0
  252. package/dist/v1/libs/sw/service/plugins/TabManager.cjs +457 -0
  253. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts +91 -0
  254. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts.map +1 -0
  255. package/dist/v1/libs/sw/service/plugins/TabManager.mjs +372 -0
  256. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.cjs +180 -0
  257. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts +28 -0
  258. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts.map +1 -0
  259. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.mjs +148 -0
  260. package/dist/v1/libs/sw/service/shared/TinyPushPayload.cjs +199 -0
  261. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts +80 -0
  262. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts.map +1 -0
  263. package/dist/v1/libs/sw/service/shared/TinyPushPayload.mjs +174 -0
  264. package/dist/v1/libs/sw/utils.cjs +57 -0
  265. package/dist/v1/libs/sw/utils.d.mts +173 -0
  266. package/dist/v1/libs/sw/utils.d.mts.map +1 -0
  267. package/dist/v1/libs/sw/utils.mjs +50 -0
  268. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.cjs +57 -0
  269. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts +39 -0
  270. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts.map +1 -0
  271. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.mjs +48 -0
  272. package/dist/v1/libs/text/TinyI18/Browser.cjs +64 -0
  273. package/dist/v1/libs/text/TinyI18/Browser.d.mts +47 -0
  274. package/dist/v1/libs/text/TinyI18/Browser.d.mts.map +1 -0
  275. package/dist/v1/libs/text/TinyI18/Browser.mjs +57 -0
  276. package/dist/v1/libs/text/TinyI18/Node.cjs +49 -0
  277. package/dist/v1/libs/text/TinyI18/Node.d.mts +38 -0
  278. package/dist/v1/libs/text/TinyI18/Node.d.mts.map +1 -0
  279. package/dist/v1/libs/text/TinyI18/Node.mjs +43 -0
  280. package/dist/v1/libs/text/TinyI18/browser-utils.cjs +17 -0
  281. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts +8 -0
  282. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts.map +1 -0
  283. package/dist/v1/libs/text/TinyI18/browser-utils.mjs +13 -0
  284. package/dist/v1/libs/text/{TinyI18.cjs → TinyI18/index.cjs} +205 -104
  285. package/dist/v1/libs/text/{TinyI18.d.mts → TinyI18/index.d.mts} +141 -92
  286. package/dist/v1/libs/text/TinyI18/index.d.mts.map +1 -0
  287. package/dist/v1/libs/text/{TinyI18.mjs → TinyI18/index.mjs} +195 -101
  288. package/dist/v1/libs/tools/TinyBrowserMonitor.cjs +1088 -0
  289. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts +621 -0
  290. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts.map +1 -0
  291. package/dist/v1/libs/tools/TinyBrowserMonitor.mjs +940 -0
  292. package/dist/v1/libs/tools/TinyDebugger.cjs +180 -19
  293. package/dist/v1/libs/tools/TinyDebugger.d.mts +220 -24
  294. package/dist/v1/libs/tools/TinyDebugger.d.mts.map +1 -1
  295. package/dist/v1/libs/tools/TinyDebugger.mjs +161 -19
  296. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.cjs +256 -0
  297. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts +125 -0
  298. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts.map +1 -0
  299. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.mjs +223 -0
  300. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.cjs +23 -0
  301. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts +17 -0
  302. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts.map +1 -0
  303. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.mjs +19 -0
  304. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.cjs +23 -0
  305. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts +17 -0
  306. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts.map +1 -0
  307. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.mjs +19 -0
  308. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.cjs +390 -0
  309. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts +9 -0
  310. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts.map +1 -0
  311. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.mjs +387 -0
  312. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.cjs +2 -0
  313. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts +27 -0
  314. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts.map +1 -0
  315. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.mjs +12 -0
  316. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/LICENSE +53 -0
  317. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.cjs +405 -0
  318. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts +34 -0
  319. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts.map +1 -0
  320. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.mjs +342 -0
  321. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.cjs +23 -0
  322. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts +17 -0
  323. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts.map +1 -0
  324. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.mjs +19 -0
  325. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.cjs +327 -0
  326. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts +9 -0
  327. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts.map +1 -0
  328. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.mjs +324 -0
  329. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.cjs +268 -0
  330. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts +107 -0
  331. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts.map +1 -0
  332. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.mjs +238 -0
  333. package/dist/v1/libs/tools/TinyPasswordValidator.cjs +491 -0
  334. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts +246 -0
  335. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts.map +1 -0
  336. package/dist/v1/libs/tools/TinyPasswordValidator.mjs +434 -0
  337. package/dist/v1/libs/tools/TinyPkgExportValidator.cjs +48 -0
  338. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts +14 -0
  339. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts.map +1 -1
  340. package/dist/v1/libs/tools/TinyPkgExportValidator.mjs +44 -0
  341. package/dist/v1/libs/tools/TinySiteMap.cjs +1029 -0
  342. package/dist/v1/libs/tools/TinySiteMap.d.mts +429 -0
  343. package/dist/v1/libs/tools/TinySiteMap.d.mts.map +1 -0
  344. package/dist/v1/libs/tools/TinySiteMap.mjs +910 -0
  345. package/dist/v1/libs/tools/TinySiteMapStream.cjs +121 -0
  346. package/dist/v1/libs/tools/TinySiteMapStream.d.mts +51 -0
  347. package/dist/v1/libs/tools/TinySiteMapStream.d.mts.map +1 -0
  348. package/dist/v1/libs/tools/TinySiteMapStream.mjs +85 -0
  349. package/dist/v1/libs/tools/TinyURLSecurityVerifier.cjs +444 -0
  350. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts +217 -0
  351. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts.map +1 -0
  352. package/dist/v1/libs/tools/TinyURLSecurityVerifier.mjs +394 -0
  353. package/dist/v1/libs/tools/TinyUriParser/BlueSky.cjs +613 -0
  354. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts +152 -0
  355. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts.map +1 -0
  356. package/dist/v1/libs/tools/TinyUriParser/BlueSky.mjs +527 -0
  357. package/dist/v1/libs/tools/TinyUriParser/Discord.cjs +1119 -0
  358. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts +306 -0
  359. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts.map +1 -0
  360. package/dist/v1/libs/tools/TinyUriParser/Discord.mjs +968 -0
  361. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.cjs +469 -0
  362. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts +80 -0
  363. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts.map +1 -0
  364. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.mjs +379 -0
  365. package/dist/v1/libs/tools/TinyUriParser.cjs +217 -0
  366. package/dist/v1/libs/tools/TinyUriParser.d.mts +109 -0
  367. package/dist/v1/libs/tools/TinyUriParser.d.mts.map +1 -0
  368. package/dist/v1/libs/tools/TinyUriParser.mjs +183 -0
  369. package/dist/v1/libs/utils/TinyCloner.cjs +466 -0
  370. package/dist/v1/libs/utils/TinyCloner.d.mts +221 -0
  371. package/dist/v1/libs/utils/TinyCloner.d.mts.map +1 -0
  372. package/dist/v1/libs/utils/TinyCloner.mjs +416 -0
  373. package/dist/v1/libs/utils/TinyPromiseQueue.cjs +1 -1
  374. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts +2 -2
  375. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts.map +1 -1
  376. package/dist/v1/libs/utils/TinyPromiseQueue.mjs +1 -1
  377. package/dist/v1/libs/utils/TinyThrottledApi.cjs +333 -0
  378. package/dist/v1/libs/utils/TinyThrottledApi.d.mts +163 -0
  379. package/dist/v1/libs/utils/TinyThrottledApi.d.mts.map +1 -0
  380. package/dist/v1/libs/utils/TinyThrottledApi.mjs +294 -0
  381. package/dist/v1/libs/worker/browser/TinyWebWorker.cjs +342 -0
  382. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts +97 -0
  383. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts.map +1 -0
  384. package/dist/v1/libs/worker/browser/TinyWebWorker.mjs +305 -0
  385. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.cjs +346 -0
  386. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts +127 -0
  387. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts.map +1 -0
  388. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.mjs +304 -0
  389. package/dist/v1/regexp/Email.cjs +185 -0
  390. package/dist/v1/regexp/Email.d.mts +73 -0
  391. package/dist/v1/regexp/Email.d.mts.map +1 -0
  392. package/dist/v1/regexp/Email.mjs +153 -0
  393. package/dist/v1/regexp/Glob.cjs +293 -0
  394. package/dist/v1/regexp/Glob.d.mts +45 -0
  395. package/dist/v1/regexp/Glob.d.mts.map +1 -0
  396. package/dist/v1/regexp/Glob.mjs +260 -0
  397. package/dist/v1/regexp/Ipv4.cjs +57 -0
  398. package/dist/v1/regexp/Ipv4.d.mts +29 -0
  399. package/dist/v1/regexp/Ipv4.d.mts.map +1 -0
  400. package/dist/v1/regexp/Ipv4.mjs +45 -0
  401. package/dist/v1/regexp/Ipv6.cjs +67 -0
  402. package/dist/v1/regexp/Ipv6.d.mts +29 -0
  403. package/dist/v1/regexp/Ipv6.d.mts.map +1 -0
  404. package/dist/v1/regexp/Ipv6.mjs +54 -0
  405. package/dist/v1/regexp/SegmentExtractor.cjs +145 -0
  406. package/dist/v1/regexp/SegmentExtractor.d.mts +91 -0
  407. package/dist/v1/regexp/SegmentExtractor.d.mts.map +1 -0
  408. package/dist/v1/regexp/SegmentExtractor.mjs +116 -0
  409. package/dist/v1/regexp/UrlDetector.cjs +125 -0
  410. package/dist/v1/regexp/UrlDetector.d.mts +67 -0
  411. package/dist/v1/regexp/UrlDetector.d.mts.map +1 -0
  412. package/dist/v1/regexp/UrlDetector.mjs +102 -0
  413. package/dist/v1/regexp/Username/index.cjs +233 -0
  414. package/dist/v1/regexp/Username/index.d.mts +77 -0
  415. package/dist/v1/regexp/Username/index.d.mts.map +1 -0
  416. package/dist/v1/regexp/Username/index.mjs +199 -0
  417. package/dist/v1/regexp/Username/jsDoc.cjs +2 -0
  418. package/dist/v1/regexp/Username/jsDoc.d.mts +57 -0
  419. package/dist/v1/regexp/Username/jsDoc.d.mts.map +1 -0
  420. package/dist/v1/regexp/Username/jsDoc.mjs +18 -0
  421. package/dist/v1/regexp/Username/templates/BlueSky.cjs +56 -0
  422. package/dist/v1/regexp/Username/templates/BlueSky.d.mts +35 -0
  423. package/dist/v1/regexp/Username/templates/BlueSky.d.mts.map +1 -0
  424. package/dist/v1/regexp/Username/templates/BlueSky.mjs +52 -0
  425. package/dist/v1/regexp/Username/templates/Discord.cjs +505 -0
  426. package/dist/v1/regexp/Username/templates/Discord.d.mts +209 -0
  427. package/dist/v1/regexp/Username/templates/Discord.d.mts.map +1 -0
  428. package/dist/v1/regexp/Username/templates/Discord.mjs +458 -0
  429. package/dist/v1/regexp/Username/templates/MatrixProtocol.cjs +143 -0
  430. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts +70 -0
  431. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts.map +1 -0
  432. package/dist/v1/regexp/Username/templates/MatrixProtocol.mjs +128 -0
  433. package/dist/v1/regexp/Username/templates/deprecated/Discord.cjs +24 -0
  434. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts +17 -0
  435. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts.map +1 -0
  436. package/dist/v1/regexp/Username/templates/deprecated/Discord.mjs +20 -0
  437. package/dist/v1/regexp/Username/templates/index.cjs +11 -0
  438. package/dist/v1/regexp/Username/templates/index.d.mts +5 -0
  439. package/dist/v1/regexp/Username/templates/index.d.mts.map +1 -0
  440. package/dist/v1/regexp/Username/templates/index.mjs +4 -0
  441. package/dist/v1/regexp/index.cjs +41 -0
  442. package/dist/v1/regexp/index.d.mts +9 -0
  443. package/dist/v1/regexp/index.d.mts.map +1 -0
  444. package/dist/v1/regexp/index.mjs +8 -0
  445. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.cjs +64 -0
  446. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts +11 -0
  447. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts.map +1 -0
  448. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.mjs +51 -0
  449. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.cjs +66 -0
  450. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts +11 -0
  451. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts.map +1 -0
  452. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.mjs +51 -0
  453. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.cjs +39 -0
  454. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts +11 -0
  455. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts.map +1 -0
  456. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.mjs +28 -0
  457. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.cjs +494 -0
  458. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts +142 -0
  459. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts.map +1 -0
  460. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.mjs +445 -0
  461. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.cjs +30 -4
  462. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts +5 -2
  463. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts.map +1 -1
  464. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs +29 -5
  465. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.cjs +135 -0
  466. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts +83 -0
  467. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts.map +1 -0
  468. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.mjs +120 -0
  469. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.cjs +127 -0
  470. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts +95 -0
  471. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts.map +1 -0
  472. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.mjs +109 -0
  473. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.cjs +83 -0
  474. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts +46 -0
  475. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts.map +1 -0
  476. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.mjs +71 -0
  477. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.cjs +493 -0
  478. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts +67 -0
  479. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts.map +1 -0
  480. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.mjs +399 -0
  481. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.cjs +35 -0
  482. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts +6 -0
  483. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts.map +1 -0
  484. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.mjs +29 -0
  485. package/docs/info/RegExp.md +74 -0
  486. package/docs/v1/Exports.md +101 -0
  487. package/docs/v1/README.md +113 -15
  488. package/docs/v1/basics/asyncReplace.md +2 -0
  489. package/docs/v1/basics/browserDetector.md +28 -11
  490. package/docs/v1/basics/crypto.md +85 -0
  491. package/docs/v1/basics/deprecated/html.md +2 -0
  492. package/docs/v1/basics/deprecated/objFilter.md +2 -0
  493. package/docs/v1/basics/html.md +2 -0
  494. package/docs/v1/basics/objChecker.md +55 -0
  495. package/docs/v1/basics/objFilter.md +57 -86
  496. package/docs/v1/basics/promiseUtils.md +12 -3
  497. package/docs/v1/basics/text.md +0 -1
  498. package/docs/v1/libs/array/TinyArrayComparator.md +50 -39
  499. package/docs/v1/libs/fs/TinyFS.md +752 -0
  500. package/docs/v1/libs/fs/TinyOPFSFileSystem.md +495 -0
  501. package/docs/v1/libs/fs/TinyStorageBucketFileSystem.md +407 -0
  502. package/docs/v1/libs/plugin/TinyPlugin.md +441 -0
  503. package/docs/v1/libs/plugin/TinyVersion.md +145 -0
  504. package/docs/v1/libs/router/TinyRouter.md +216 -0
  505. package/docs/v1/libs/storage/TinyMapCache.md +219 -0
  506. package/docs/v1/libs/storage/TinySetMapDatabase.md +478 -0
  507. package/docs/v1/libs/sw/browser/TinyNotificationAdapter.md +280 -0
  508. package/docs/v1/libs/sw/browser/TinyPushManager.md +782 -0
  509. package/docs/v1/libs/sw/browser/TinyServiceWorker.md +365 -0
  510. package/docs/v1/libs/sw/browser/plugins/TabManager.md +133 -0
  511. package/docs/v1/libs/sw/service/TinyPushRouter.md +314 -0
  512. package/docs/v1/libs/sw/service/TinyServiceWorkerEngine.md +748 -0
  513. package/docs/v1/libs/sw/service/plugins/GlobBypassPlugin.md +229 -0
  514. package/docs/v1/libs/sw/service/plugins/GlobCachePlugin.md +91 -0
  515. package/docs/v1/libs/sw/service/plugins/Ping.md +36 -0
  516. package/docs/v1/libs/sw/service/plugins/TabManager.md +64 -0
  517. package/docs/v1/libs/sw/service/plugins/ViteFileDetector.md +92 -0
  518. package/docs/v1/libs/sw/service/shared/TinyPushPayload.md +316 -0
  519. package/docs/v1/libs/text/TinyI18.md +80 -56
  520. package/docs/v1/libs/tools/TinyBrowserMonitor.md +170 -0
  521. package/docs/v1/libs/tools/TinyDebugger.md +117 -1
  522. package/docs/v1/libs/tools/TinyHtmlTagRegexBuilder.md +141 -0
  523. package/docs/v1/libs/tools/TinyHttpResponseRegistry.md +129 -0
  524. package/docs/v1/libs/tools/TinyPasswordValidator.md +153 -0
  525. package/docs/v1/libs/tools/TinyPkgExportValidator.md +45 -1
  526. package/docs/v1/libs/tools/TinySiteMap.md +134 -0
  527. package/docs/v1/libs/tools/TinySiteMapStream.md +97 -0
  528. package/docs/v1/libs/tools/TinyURLSecurityVerifier.md +146 -0
  529. package/docs/v1/libs/tools/TinyUriParser/Discord.md +374 -0
  530. package/docs/v1/libs/tools/TinyUriParser/MatrixProtocol.md +54 -0
  531. package/docs/v1/libs/tools/TinyUriParser.md +128 -0
  532. package/docs/v1/libs/utils/TinyCloner.md +126 -0
  533. package/docs/v1/libs/utils/TinyPromiseQueue.md +1 -1
  534. package/docs/v1/libs/utils/TinyThrottledApi.md +219 -0
  535. package/docs/v1/libs/worker/browser/TinyWebWorker.md +331 -0
  536. package/docs/v1/libs/worker/engine/TinyWebWorkerEngine.md +137 -0
  537. package/docs/v1/regexp/Email.md +127 -0
  538. package/docs/v1/regexp/Glob.md +155 -0
  539. package/docs/v1/regexp/IPv4.md +103 -0
  540. package/docs/v1/regexp/IPv6.md +122 -0
  541. package/docs/v1/regexp/SegmentExtractor.md +120 -0
  542. package/docs/v1/regexp/UrlDetector.md +117 -0
  543. package/docs/v1/regexp/Username/Base.md +131 -0
  544. package/docs/v1/regexp/Username/Discord.md +267 -0
  545. package/docs/v1/regexp/Username/MatrixProtocol.md +131 -0
  546. package/docs/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters.md +569 -0
  547. package/docs/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.md +19 -7
  548. package/docs/v1/webTemplates/media/MediaValidator/v1/Browser.md +123 -0
  549. package/docs/v1/webTemplates/media/MediaValidator/v1/Node.md +136 -0
  550. package/docs/v1/webTemplates/multiformats/14.0/IPFSHasher.md +310 -0
  551. package/docs/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.md +131 -0
  552. package/docs/v1/webTemplates/vite/7.3/plugins/githubUtils.md +50 -0
  553. package/package.json +303 -13
  554. package/types/EventEmitter.d.ts +48 -0
  555. package/dist/v1/libs/text/TinyI18.d.mts.map +0 -1
@@ -1,5 +1,9 @@
1
1
  // @ts-nocheck
2
2
  import { isJsonObject } from './objChecker.mjs';
3
+ /**
4
+ * A flag indicating if the current environment is a web browser.
5
+ * @type {boolean}
6
+ */
3
7
  const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
4
8
  /**
5
9
  * An object containing type validation functions and their evaluation order.
@@ -9,32 +13,76 @@ const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'u
9
13
  *
10
14
  * The `order` array defines the priority in which types should be checked,
11
15
  * which can be useful for functions that infer types in a consistent manner.
12
- *
13
16
  */
14
17
  const typeValidator = {
18
+ /**
19
+ * A registry where keys are type names and values are their validation and cloning logic.
20
+ * @type {Record<string, ObjTypeRegistry<any, any>>}
21
+ */
15
22
  items: {},
16
23
  /**
17
- * Evaluation order of the type checkers.
24
+ * The sequence in which type validators are checked.
25
+ * The first validator to return true for a value determines the type name.
18
26
  * @type {string[]}
19
- * */
27
+ */
20
28
  order: [],
21
29
  };
22
- /** @typedef {Object.<string, (val: any) => *>} ExtendObjType */
23
- /** @typedef {Array<[string, (val: any) => *]>} ExtendObjTypeArray */
24
30
  /**
25
- * Adds new type checkers to the typeValidator without overwriting existing ones.
31
+ * @typedef {import('../libs/utils/TinyCloner.mjs').default} TinyCloner
32
+ */
33
+ /**
34
+ * A function type used to validate a value and return a specific result.
26
35
  *
27
- * Accepts either an object with named functions or an array of [key, fn] arrays.
28
- * If no index is provided, the type is inserted just before 'object' (if it exists), or at the end.
36
+ * @template {any} Value - The type of the value being validated.
37
+ * @template {any} Result - The type of the result returned by the function.
38
+ * @typedef {(val: Value) => Result} ExtendObjTypeFunc
39
+ */
40
+ /**
41
+ * A function type used to clone a value, supporting deep cloning operations.
29
42
  *
30
- * @param {ExtendObjType|ExtendObjTypeArray} newItems
43
+ * @template {any} Value - The type of the value to be cloned.
44
+ * @typedef {(val: Value, isDeep: boolean, cloner: TinyCloner) => Value} ExtendObjTypeCloner
45
+ */
46
+ /**
47
+ * A mapping of type names to their corresponding validation functions.
48
+ *
49
+ * @template {any} Value - The type of the value being mapped.
50
+ * @typedef {Object.<string, ExtendObjTypeFunc<Value, any>>} ExtendObjType
51
+ */
52
+ /**
53
+ * A tuple representing a type definition, containing a key, a validator, and an optional cloner.
54
+ *
55
+ * @template {any} Value - The type of the value.
56
+ * @template {any} Result - The type of the result returned by the validator.
57
+ * @typedef {[string, ExtendObjTypeFunc<Value, Result>, ExtendObjTypeCloner<Value>]|[string, ExtendObjTypeFunc<Value, Result>]} ExtendObjTypeValue
58
+ */
59
+ /**
60
+ * A registry object containing the validator and cloner for a specific type.
61
+ *
62
+ * @template {any} Value - The type of the value being registered.
63
+ * @template {any} Result - The type of the result returned by the validator.
64
+ * @typedef {Object} ObjTypeRegistry
65
+ * @property {ExtendObjTypeFunc<Value, Result>} validator - The function used to validate the type.
66
+ * @property {ExtendObjTypeCloner<Value>} cloner - The function used to create a clone of the value.
67
+ */
68
+ /**
69
+ * Adds new type checkers to the `typeValidator` registry.
70
+ *
71
+ * Accepts an object of functions, an array of [key, validator] tuples, or an array of [key, validator, cloner] tuples.
72
+ * If an `index` is provided, the new type is inserted at that position.
73
+ * If no index is provided, it is inserted before the 'object' type or at the end of the registry.
74
+ *
75
+ * @template {any} Value
76
+ * @template {any} Result
77
+ * @param {ExtendObjType<Value> | ExtendObjTypeValue<Value, Result>[] | ExtendObjTypeValue<Value, Result>} ni
31
78
  * - New type validators to be added.
32
79
  * @param {number} [index] - Optional. Position at which to insert each new type. Ignored if the type already exists.
33
80
  * @returns {string[]} - A list of successfully added type names.
81
+ * @throws {TypeError} If `ni` is not an object/array, if `index` is not a number, if a key is not a string, or if a validator is not a function.
34
82
  *
35
83
  * @example
36
84
  * extendObjType({
37
- * htmlElement2: val => typeof HTMLElement !== 'undefined' && val instanceof HTMLElement
85
+ * htmlElement2: val => typeof HTMLElement !== 'undefined' && val instanceof HTMLElement
38
86
  * });
39
87
  *
40
88
  * @example
@@ -42,30 +90,67 @@ const typeValidator = {
42
90
  * ['alpha', val => typeof val === 'string'],
43
91
  * ['beta', val => Array.isArray(val)]
44
92
  * ]);
93
+ *
94
+ * @example
95
+ * extendObjType(['gamma', val => typeof val === 'number']);
45
96
  */
46
- export function extendObjType(newItems, index) {
47
- if (typeof newItems !== 'object' || newItems === null) {
48
- throw new TypeError("Argument 'newItems' must be an object or an array.");
97
+ export function extendObjType(ni, index) {
98
+ if (typeof ni !== 'object' || ni === null) {
99
+ throw new TypeError("Argument 'ni' must be an object or an array.");
49
100
  }
50
101
  if (typeof index !== 'undefined' && typeof index !== 'number') {
51
102
  throw new TypeError("Argument 'index' must be a number.");
52
103
  }
53
104
  const added = [];
54
- const entries = Array.isArray(newItems) ? newItems : Object.entries(newItems);
105
+ // Normalization logic:
106
+ // 1. If ni is an array:
107
+ // - If the first element is also an array, it is an array of tuples (ExtendObjTypeValue[]).
108
+ // - If the first element is not an array, it is a single tuple (ExtendObjTypeValue).
109
+ // - If the array is empty, we use an empty array.
110
+ // 2. If ni is an object:
111
+ // - We use Object.entries to convert it to an array of [key, value] pairs.
112
+ /**
113
+ * @type {[string, ExtendObjTypeFunc<Value, Result>, ExtendObjTypeCloner<Value> | undefined][]}
114
+ */
115
+ let entries;
116
+ if (Array.isArray(ni)) {
117
+ if (ni.length > 0 && Array.isArray(ni[0])) {
118
+ // @ts-ignore
119
+ entries = ni;
120
+ }
121
+ else if (ni.length > 0) {
122
+ // @ts-ignore
123
+ entries = [ni];
124
+ }
125
+ else {
126
+ entries = [];
127
+ }
128
+ }
129
+ else {
130
+ // @ts-ignore
131
+ entries = Object.entries(ni);
132
+ }
55
133
  for (const entry of entries) {
56
134
  if (!Array.isArray(entry) || entry.length < 2) {
57
- throw new TypeError("Each item in 'newItems' array must be a [key, function] pair.");
135
+ throw new TypeError('Each item in the input must be a [key, function] pair.');
136
+ }
137
+ const [key, validator, cloner] = entry;
138
+ if (typeof cloner !== 'undefined' && typeof cloner !== 'function') {
139
+ throw new TypeError(`Cloner for key '${key}' must be a function.`);
58
140
  }
59
- const [key, fn] = entry;
141
+ /** @type {ExtendObjTypeCloner<Value>} */
142
+ const effectiveCloner = typeof cloner === 'function' ? cloner : (val) => val;
60
143
  if (typeof key !== 'string') {
61
144
  throw new TypeError('Validator key must be a string.');
62
145
  }
63
- if (typeof fn !== 'function') {
146
+ if (typeof validator !== 'function') {
64
147
  throw new TypeError(`Validator for key '${key}' must be a function.`);
65
148
  }
66
149
  if (!typeValidator.items.hasOwnProperty(key)) {
67
- // @ts-ignore
68
- typeValidator.items[key] = fn;
150
+ typeValidator.items[key] = {
151
+ validator: validator,
152
+ cloner: effectiveCloner,
153
+ };
69
154
  let insertAt = typeof index === 'number' ? index : -1; // Default to -1 if index isn't provided
70
155
  // Default to before 'object', or to the end
71
156
  if (insertAt === -1) {
@@ -135,10 +220,9 @@ export function cloneObjTypeOrder() {
135
220
  export const objTypeName = (val) => {
136
221
  if (val === null)
137
222
  return 'null';
138
- // @ts-ignore
139
223
  for (const name of typeValidator.order) {
140
- // @ts-ignore
141
- if (typeof typeValidator.items[name] !== 'function' || typeValidator.items[name](val))
224
+ if (typeof typeValidator.items[name].validator !== 'function' ||
225
+ typeValidator.items[name].validator(val))
142
226
  return name;
143
227
  }
144
228
  return 'unknown';
@@ -149,6 +233,7 @@ export const objTypeName = (val) => {
149
233
  * @param {*} obj - The object to check.
150
234
  * @param {string} [type] - Checks whether the object matches this type (e.g., "object", "array", "string").
151
235
  * @returns {boolean} - Returns `true` if the type matches.
236
+ * @throws {TypeError} If `type` is not a string.
152
237
  */
153
238
  export function isObjType(obj, type) {
154
239
  if (typeof type !== 'string')
@@ -163,6 +248,7 @@ export function isObjType(obj, type) {
163
248
  * @param {string} [type] - Optional. If provided, checks whether the object matches this type (e.g., "object", "array", "string").
164
249
  * @returns {boolean|string|null} - Returns `true` if the type matches, `false` if not,
165
250
  * the type string if no type is provided, or `null` if the object is `undefined`.
251
+ * @throws {TypeError} If `type` is provided but is not a string.
166
252
  *
167
253
  * @example
168
254
  * objType([], 'array'); // true
@@ -182,19 +268,22 @@ export function objType(obj, type) {
182
268
  return result;
183
269
  }
184
270
  /**
185
- * Checks the type of a given object and returns the validation value if a known type is detected.
271
+ * @typedef {Object} CheckResult
272
+ * @property {*} valid - The result of the validator function (often the value itself if truthy).
273
+ * @property {string | null} type - The name of the detected type.
274
+ */
275
+ /**
276
+ * Evaluates an object against the registered validators and returns the first match.
186
277
  *
187
- * @param {*} obj - The object to check or identify.
188
- * @returns {{ valid:*; type: string | null }} - Returns the type result.
278
+ * @param {unknown} obj - The object to check.
279
+ * @returns {CheckResult} An object containing the validation result and the type name.
189
280
  */
190
281
  export function checkObj(obj) {
191
- /** @type {{ valid:*; type: string | null }} */
282
+ /** @type {CheckResult} */
192
283
  const data = { valid: null, type: null };
193
284
  for (const name of typeValidator.order) {
194
- // @ts-ignore
195
- if (typeof typeValidator.items[name] === 'function') {
196
- // @ts-ignore
197
- const result = typeValidator.items[name](obj);
285
+ if (typeof typeValidator.items[name].validator === 'function') {
286
+ const result = typeValidator.items[name].validator(obj);
198
287
  if (result) {
199
288
  data.valid = result;
200
289
  data.type = name;
@@ -205,13 +294,19 @@ export function checkObj(obj) {
205
294
  return data;
206
295
  }
207
296
  /**
208
- * Creates a clone of the functions from the `typeValidator` object.
209
- * It returns a new object where the keys are the same and the values are the cloned functions.
297
+ * Returns a shallow clone of the `typeValidator.items` registry.
298
+ *
299
+ * @returns {Record<string, ObjTypeRegistry<any, any>>} A new object containing the registry data.
210
300
  */
211
- export function getCheckObj() {
212
- return Object.fromEntries(Object.entries(typeValidator.items).map(([key, fn]) => [key, fn]));
301
+ export function getObjTypeRegistry() {
302
+ return Object.fromEntries(Object.entries(typeValidator.items).map(([key, data]) => [key, { ...data }]));
213
303
  }
214
- // Insert obj types
304
+ /**
305
+ * Returns a copy of the current order of type validators.
306
+ * @returns {string[]} A new array containing the type order.
307
+ */
308
+ export const getObjTypeOrder = () => [...typeValidator.order];
309
+ // --- Type Registration ---
215
310
  extendObjType([
216
311
  [
217
312
  'undefined',
@@ -233,6 +328,11 @@ extendObjType([
233
328
  /** @param {unknown} val @returns {val is number} */
234
329
  (val) => typeof val === 'number' && !Number.isNaN(val),
235
330
  ],
331
+ [
332
+ 'nannumber',
333
+ /** @param {unknown} val @returns {val is number} */
334
+ (val) => typeof val === 'number' && Number.isNaN(val),
335
+ ],
236
336
  [
237
337
  'bigint',
238
338
  /** @param {unknown} val @returns {val is bigint} */
@@ -253,85 +353,109 @@ extendObjType([
253
353
  /** @param {unknown} val @returns {val is Function} */
254
354
  (val) => typeof val === 'function',
255
355
  ],
256
- [
257
- 'array',
258
- /**
259
- * @param {unknown} val @returns {val is unknown[]}
260
- */
261
- (val) => Array.isArray(val),
262
- ],
356
+ ]);
357
+ extendObjType([
358
+ 'array',
359
+ /** @param {unknown} val @returns {val is unknown[]} */
360
+ (val) => Array.isArray(val),
361
+ /** @type {ExtendObjTypeCloner<unknown[]>} */
362
+ (item, isDeep, cloner) => item.map((element) => (isDeep ? cloner.clone(element, isDeep) : element)),
263
363
  ]);
264
364
  if (isBrowser) {
265
365
  extendObjType([
266
- [
267
- 'file',
268
- /** @param {unknown} val @returns {val is File} */
269
- (val) => typeof File !== 'undefined' && val instanceof File,
270
- ],
366
+ 'file',
367
+ /** @param {unknown} val @returns {val is File} */
368
+ (val) => typeof File !== 'undefined' && val instanceof File,
369
+ /** @type {ExtendObjTypeCloner<File>} */
370
+ (item) => new File([item], item.name, { type: item.type, lastModified: item.lastModified }),
271
371
  ]);
272
372
  }
273
373
  extendObjType([
274
- [
275
- 'date',
276
- /** @param {unknown} val @returns {val is Date} */
277
- (val) => val instanceof Date,
278
- ],
279
- [
280
- 'regexp',
281
- /** @param {unknown} val @returns {val is RegExp} */
282
- (val) => val instanceof RegExp,
283
- ],
284
- [
285
- 'map',
286
- /**
287
- * @param {unknown} val @returns {val is Map<unknown, unknown>}
288
- */
289
- (val) => val instanceof Map,
290
- ],
291
- [
292
- 'set',
293
- /**
294
- * @param {unknown} val @returns {val is Set<unknown>}
295
- */
296
- (val) => val instanceof Set,
297
- ],
374
+ 'date',
375
+ /** @param {unknown} val @returns {val is Date} */
376
+ (val) => val instanceof Date,
377
+ /** @type {ExtendObjTypeCloner<Date>} */
378
+ (item) => new Date(item.getTime()),
379
+ ]);
380
+ extendObjType([
381
+ 'regexp',
382
+ /** @param {unknown} val @returns {val is RegExp} */
383
+ (val) => val instanceof RegExp,
384
+ /** @type {ExtendObjTypeCloner<RegExp>} */
385
+ (item) => new RegExp(item.source, item.flags),
386
+ ]);
387
+ extendObjType([
388
+ 'map',
389
+ /** @param {unknown} val @returns {val is Map<unknown, unknown>} */
390
+ (val) => val instanceof Map,
391
+ /** @type {ExtendObjTypeCloner<Map<unknown, unknown>>} */
392
+ (item, isDeep, cloner) => {
393
+ const result = new Map();
394
+ for (const [key, value] of item.entries()) {
395
+ result.set(key, isDeep ? cloner.clone(value, isDeep) : value);
396
+ }
397
+ return result;
398
+ },
399
+ ]);
400
+ extendObjType([
401
+ 'set',
402
+ /** @param {unknown} val @returns {val is Set<unknown>} */
403
+ (val) => val instanceof Set,
404
+ /** @type {ExtendObjTypeCloner<Set<any>>} */
405
+ (item, isDeep, cloner) => {
406
+ const result = new Set();
407
+ for (const value of item) {
408
+ result.add(isDeep ? cloner.clone(value, isDeep) : value);
409
+ }
410
+ return result;
411
+ },
412
+ ]);
413
+ extendObjType([
298
414
  [
299
415
  'weakmap',
300
- /**
301
- * @param {unknown} val @returns {val is WeakMap<unknown, unknown>}
302
- */
416
+ /** @param {unknown} val @returns {val is WeakMap<unknown, unknown>} */
303
417
  (val) => val instanceof WeakMap,
304
418
  ],
305
419
  [
306
420
  'weakset',
307
- /**
308
- * @param {unknown} val @returns {val is WeakSet<unknown>}
309
- */
421
+ /** @param {unknown} val @returns {val is WeakSet<unknown>} */
310
422
  (val) => val instanceof WeakSet,
311
423
  ],
312
424
  [
313
425
  'promise',
314
- /**
315
- * @param {unknown} val @returns {val is Promise<unknown>}
316
- */
426
+ /** @param {unknown} val @returns {val is Promise<unknown>} */
317
427
  (val) => val instanceof Promise,
318
428
  ],
319
429
  ]);
430
+ extendObjType([
431
+ 'url',
432
+ /** @param {unknown} val @returns {val is URL} */
433
+ (val) => val instanceof URL,
434
+ /** @type {ExtendObjTypeCloner<URL>} */
435
+ (item) => new URL(item.href),
436
+ ]);
320
437
  if (isBrowser) {
321
438
  extendObjType([
322
- [
323
- 'htmlelement',
324
- /** @param {unknown} val @returns {val is HTMLElement} */
325
- (val) => typeof HTMLElement !== 'undefined' && val instanceof HTMLElement,
326
- ],
439
+ 'htmlelement',
440
+ /** @param {unknown} val @returns {val is HTMLElement} */
441
+ (val) => typeof HTMLElement !== 'undefined' && val instanceof HTMLElement,
442
+ /** @type {ExtendObjTypeCloner<Node>} */
443
+ (item) => item.cloneNode(true),
327
444
  ]);
328
445
  }
329
446
  extendObjType([
330
- [
331
- 'object',
332
- /**
333
- * @param {unknown} val @returns {val is Record<string | number | symbol, unknown>}
334
- */
335
- (val) => isJsonObject(val),
336
- ],
447
+ 'object',
448
+ /** @param {unknown} val @returns {val is Record<string | number | symbol, unknown>} */
449
+ (val) => isJsonObject(val),
450
+ /** @type {ExtendObjTypeCloner<Record<string | number | symbol, unknown>>} */
451
+ (item, isDeep, cloner) => {
452
+ /** @type {Record<string | number | symbol, unknown>} */
453
+ const result = {};
454
+ for (const key in item) {
455
+ if (Object.prototype.hasOwnProperty.call(item, key)) {
456
+ result[key] = isDeep ? cloner.clone(item[key], isDeep) : item[key];
457
+ }
458
+ }
459
+ return result;
460
+ },
337
461
  ]);
@@ -24,22 +24,34 @@ const waitForTrue = (getValue, checkInterval = 100) => {
24
24
  });
25
25
  };
26
26
 
27
+ /**
28
+ * @template {any} T
29
+ * @template {any[]} A
30
+ * @typedef {Object} SingletonTaskResult
31
+ * @property {(...args: A) => Promise<T>} callback - The wrapped function that manages single execution.
32
+ * @property {() => Promise<T> | null} getActivePromise - Returns the promise currently being executed or null if none is active.
33
+ * @property {() => void} resetActivePromise - Forces a reset of the active promise, allowing an immediate new execution.
34
+ * @property {() => boolean} isEnded - Returns true if the last execution (success or failure) has finished.
35
+ * @property {() => boolean} isFailed - Returns true if the last execution resulted in an error.
36
+ * @property {() => boolean} isLoading - Returns true if an execution is currently in progress.
37
+ */
38
+
27
39
  /**
28
40
  * Creates a controller object that manages the execution state of an asynchronous function,
29
- * ensuring it only executes one instance at a time. If a task is already in progress,
30
- * subsequent calls to the callback will wait for the existing promise to resolve.
41
+ * ensuring it only executes one instance at a time.
42
+ *
43
+ * If a task is already in progress, subsequent calls to the callback will return
44
+ * the exact same promise as the first call, preventing redundant operations.
31
45
  *
32
46
  * @template {any} T
33
47
  * @template {any[]} A
34
48
  * @param {(...args: A) => Promise<T>} baseFunction - The asynchronous function to be wrapped.
35
- * @returns {{
36
- * callback: (...args: A) => Promise<T>,
37
- * getActivePromise: () => Promise<T> | null,
38
- * resetActivePromise: () => void
39
- * }} An object containing the execution controller.
49
+ * @param {boolean} [autoReset=true] - If true, the controller clears the active promise automatically
50
+ * once the base function resolves or rejects. If false, the lock remains until `resetActivePromise` is called.
51
+ * @returns {SingletonTaskResult<T, A>} An object containing the execution controller and state monitors.
40
52
  * @throws {TypeError} If the provided baseFunction is not a function.
41
53
  */
42
- const createSingletonTask = (baseFunction) => {
54
+ const createSingletonTask = (baseFunction, autoReset = true) => {
43
55
  // Validation: Ensure the input is a function before proceeding.
44
56
  if (typeof baseFunction !== 'function') {
45
57
  throw new TypeError('The argument "baseFunction" must be a function.');
@@ -51,11 +63,21 @@ const createSingletonTask = (baseFunction) => {
51
63
  */
52
64
  let activePromise = null;
53
65
 
66
+ /**
67
+ * Internal state tracking the lifecycle of the task.
68
+ * @type {{ended: boolean, failed: boolean, loading: boolean}}
69
+ */
70
+ const status = {
71
+ ended: false,
72
+ failed: false,
73
+ loading: false,
74
+ };
75
+
54
76
  /**
55
77
  * The wrapped function returned to the user.
56
78
  *
57
79
  * @param {A} args - The arguments to pass to the base function.
58
- * @returns {Promise<T>} The result of the base function or the existing promise.
80
+ * @returns {Promise<T>} The result of the base function or the existing promise if already running.
59
81
  */
60
82
  const callback = async (...args) => {
61
83
  // If a request is already in progress, return the existing promise.
@@ -63,16 +85,23 @@ const createSingletonTask = (baseFunction) => {
63
85
  return activePromise;
64
86
  }
65
87
 
88
+ status.loading = true;
66
89
  // Create the execution wrapper and ASSIGN it to activePromise
67
90
  activePromise = (async () => {
68
91
  try {
69
92
  const result = await baseFunction(...args);
93
+ status.ended = true;
94
+ status.failed = false;
95
+ status.loading = false;
70
96
  // Reset after success so the next call can start a new execution
71
- activePromise = null;
97
+ if (autoReset) activePromise = null;
72
98
  return result;
73
99
  } catch (error) {
100
+ status.ended = true;
101
+ status.failed = true;
102
+ status.loading = false;
74
103
  // Reset on error to allow subsequent retry attempts.
75
- activePromise = null;
104
+ if (autoReset) activePromise = null;
76
105
  throw error;
77
106
  }
78
107
  })();
@@ -91,10 +120,17 @@ const createSingletonTask = (baseFunction) => {
91
120
  * @returns {void}
92
121
  */
93
122
  const resetActivePromise = () => {
123
+ status.ended = false;
124
+ status.failed = false;
125
+ status.loading = false;
94
126
  activePromise = null;
95
127
  };
96
128
 
97
- return { callback, getActivePromise, resetActivePromise };
129
+ const isEnded = () => status.ended;
130
+ const isFailed = () => status.failed;
131
+ const isLoading = () => status.loading;
132
+
133
+ return { callback, getActivePromise, resetActivePromise, isEnded, isFailed, isLoading };
98
134
  };
99
135
 
100
136
  exports.createSingletonTask = createSingletonTask;
@@ -8,24 +8,57 @@
8
8
  * @throws {TypeError} If arguments are invalid.
9
9
  */
10
10
  export declare const waitForTrue: (getValue: () => boolean, checkInterval?: number) => Promise<void>;
11
+ export type SingletonTaskResult<T extends any, A extends any[]> = {
12
+ /**
13
+ * - The wrapped function that manages single execution.
14
+ */
15
+ callback: (...args: A) => Promise<T>;
16
+ /**
17
+ * - Returns the promise currently being executed or null if none is active.
18
+ */
19
+ getActivePromise: () => Promise<T> | null;
20
+ /**
21
+ * - Forces a reset of the active promise, allowing an immediate new execution.
22
+ */
23
+ resetActivePromise: () => void;
24
+ /**
25
+ * - Returns true if the last execution (success or failure) has finished.
26
+ */
27
+ isEnded: () => boolean;
28
+ /**
29
+ * - Returns true if the last execution resulted in an error.
30
+ */
31
+ isFailed: () => boolean;
32
+ /**
33
+ * - Returns true if an execution is currently in progress.
34
+ */
35
+ isLoading: () => boolean;
36
+ };
37
+ /**
38
+ * @template {any} T
39
+ * @template {any[]} A
40
+ * @typedef {Object} SingletonTaskResult
41
+ * @property {(...args: A) => Promise<T>} callback - The wrapped function that manages single execution.
42
+ * @property {() => Promise<T> | null} getActivePromise - Returns the promise currently being executed or null if none is active.
43
+ * @property {() => void} resetActivePromise - Forces a reset of the active promise, allowing an immediate new execution.
44
+ * @property {() => boolean} isEnded - Returns true if the last execution (success or failure) has finished.
45
+ * @property {() => boolean} isFailed - Returns true if the last execution resulted in an error.
46
+ * @property {() => boolean} isLoading - Returns true if an execution is currently in progress.
47
+ */
11
48
  /**
12
49
  * Creates a controller object that manages the execution state of an asynchronous function,
13
- * ensuring it only executes one instance at a time. If a task is already in progress,
14
- * subsequent calls to the callback will wait for the existing promise to resolve.
50
+ * ensuring it only executes one instance at a time.
51
+ *
52
+ * If a task is already in progress, subsequent calls to the callback will return
53
+ * the exact same promise as the first call, preventing redundant operations.
15
54
  *
16
55
  * @template {any} T
17
56
  * @template {any[]} A
18
57
  * @param {(...args: A) => Promise<T>} baseFunction - The asynchronous function to be wrapped.
19
- * @returns {{
20
- * callback: (...args: A) => Promise<T>,
21
- * getActivePromise: () => Promise<T> | null,
22
- * resetActivePromise: () => void
23
- * }} An object containing the execution controller.
58
+ * @param {boolean} [autoReset=true] - If true, the controller clears the active promise automatically
59
+ * once the base function resolves or rejects. If false, the lock remains until `resetActivePromise` is called.
60
+ * @returns {SingletonTaskResult<T, A>} An object containing the execution controller and state monitors.
24
61
  * @throws {TypeError} If the provided baseFunction is not a function.
25
62
  */
26
- export declare const createSingletonTask: <T extends any, A extends any[]>(baseFunction: (...args: A) => Promise<T>) => {
27
- callback: (...args: A) => Promise<T>;
28
- getActivePromise: () => Promise<T> | null;
29
- resetActivePromise: () => void;
30
- };
63
+ export declare const createSingletonTask: <T extends any, A extends any[]>(baseFunction: (...args: A) => Promise<T>, autoReset?: boolean) => SingletonTaskResult<T, A>;
31
64
  //# sourceMappingURL=promiseUtils.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"promiseUtils.d.mts","sourceRoot":"","sources":["../../../src/v1/basics/promiseUtils.mjs"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,aALb,MAAM,OAAO,kBACb,MAAM,KACJ,OAAO,CAAC,IAAI,CAgBxB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,GAVb,CAAC,SAAN,GAAM,EACC,CAAC,SAAR,GAAG,EAAK,gBACX,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KACxB;IACR,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,gBAAgB,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1C,kBAAkB,EAAE,MAAM,IAAI,CAAA;CA4DlC,CAAC"}
1
+ {"version":3,"file":"promiseUtils.d.mts","sourceRoot":"","sources":["../../../src/v1/basics/promiseUtils.mjs"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,aALb,MAAM,OAAO,kBACb,MAAM,KACJ,OAAO,CAAC,IAAI,CAgBxB,CAAC;AAKC,YAAkB,mBAAmB,CAFrB,CAAC,SAAN,GAAM,EACC,CAAC,SAAR,GAAG,EAAK,IAEnB;;;;IAAuC,QAAQ,EAApC,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CACrC;;;;IAAoC,gBAAgB,EAAzC,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAClC;;;;IAAuB,kBAAkB,EAA9B,MAAM,IAAI,CACrB;;;;IAA0B,OAAO,EAAtB,MAAM,OAAO,CACxB;;;;IAA0B,QAAQ,EAAvB,MAAM,OAAO,CACxB;;;;IAA0B,SAAS,EAAxB,MAAM,OAAO,CAC1B;CAAA,CAAA;AAVD;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,GARb,CAAC,SAAN,GAAM,EACC,CAAC,SAAR,GAAG,EAAK,gBACX,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,cAC1B,OAAO,KAEL,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAmFpC,CAAC"}