tiny-essentials 1.28.19 → 1.29.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) 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/changelog/1/29/1.md +11 -0
  5. package/dist/v1/ColorSafeStringify.min.js +1 -1
  6. package/dist/v1/TinyAdvancedRaffle.min.js +1 -1
  7. package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
  8. package/dist/v1/TinyAnalogClock.min.js +1 -1
  9. package/dist/v1/TinyArrayComparator.min.js +1 -1
  10. package/dist/v1/TinyArrayPaginator.min.js +1 -1
  11. package/dist/v1/TinyBasicsEs.min.js +1 -1
  12. package/dist/v1/TinyBrowserMonitor.min.js +1 -0
  13. package/dist/v1/TinyClassManager.min.js +1 -1
  14. package/dist/v1/TinyClipboard.min.js +1 -1
  15. package/dist/v1/TinyCloner.min.js +1 -0
  16. package/dist/v1/TinyColorConverter.min.js +1 -1
  17. package/dist/v1/TinyColorValidator.min.js +1 -1
  18. package/dist/v1/TinyCookieConsent.min.js +1 -1
  19. package/dist/v1/TinyDayNightCycle.min.js +1 -1
  20. package/dist/v1/TinyDebugger.min.js +1 -1
  21. package/dist/v1/TinyDomReadyManager.min.js +1 -1
  22. package/dist/v1/TinyDragDropDetector.min.js +1 -1
  23. package/dist/v1/TinyDragger.min.js +1 -1
  24. package/dist/v1/TinyElementObserver.min.js +1 -1
  25. package/dist/v1/TinyEssentials.min.js +1 -1
  26. package/dist/v1/TinyGamepad.min.js +1 -1
  27. package/dist/v1/TinyHtml.min.js +1 -1
  28. package/dist/v1/TinyHtmlTagRegexBuilder.min.js +1 -0
  29. package/dist/v1/TinyHttpResponseRegistry.min.js +1 -0
  30. package/dist/v1/TinyI18.min.js +1 -1
  31. package/dist/v1/TinyIframeEvents.min.js +1 -1
  32. package/dist/v1/TinyInventory.min.js +1 -1
  33. package/dist/v1/TinyInventoryTrader.min.js +1 -1
  34. package/dist/v1/TinyLevelUp.min.js +1 -1
  35. package/dist/v1/TinyLoadingScreen.min.js +1 -1
  36. package/dist/v1/TinyLocalStorage.min.js +1 -1
  37. package/dist/v1/TinyMaInSys.min.js +1 -1
  38. package/dist/v1/TinyMapCache.min.js +1 -0
  39. package/dist/v1/TinyMediaPlayer.min.js +1 -1
  40. package/dist/v1/TinyNeedBar.min.js +1 -1
  41. package/dist/v1/TinyNewWinEvents.min.js +1 -1
  42. package/dist/v1/TinyNotificationAdapter.min.js +1 -0
  43. package/dist/v1/TinyNotifications.min.js +1 -1
  44. package/dist/v1/TinyNotifyCenter.min.js +1 -1
  45. package/dist/v1/TinyOPFSFileSystem.min.js +1 -0
  46. package/dist/v1/TinyPasswordValidator.min.js +1 -0
  47. package/dist/v1/TinyPluginPackage.min.js +1 -0
  48. package/dist/v1/TinyPromiseQueue.min.js +1 -1
  49. package/dist/v1/TinyPushManager.min.js +1 -0
  50. package/dist/v1/TinyPushPayload.min.js +1 -0
  51. package/dist/v1/TinyPushRouter.min.js +1 -0
  52. package/dist/v1/TinyRadioFm.min.js +1 -1
  53. package/dist/v1/TinyRateLimiter.min.js +1 -1
  54. package/dist/v1/TinyRegexEs.min.js +1 -0
  55. package/dist/v1/TinyRouter.min.js +1 -0
  56. package/dist/v1/TinyServiceWorker.min.js +1 -0
  57. package/dist/v1/TinyServiceWorkerEngine.min.js +1 -0
  58. package/dist/v1/TinySetMapPackage.min.js +1 -0
  59. package/dist/v1/TinySimpleDice.min.js +1 -1
  60. package/dist/v1/TinySmartScroller.min.js +1 -1
  61. package/dist/v1/TinyStorageBucketFileSystem.min.js +1 -0
  62. package/dist/v1/TinyTextDiffer.min.js +1 -1
  63. package/dist/v1/TinyTextRangeEditor.min.js +1 -1
  64. package/dist/v1/TinyTextarea.min.js +1 -1
  65. package/dist/v1/TinyThrottledApi.min.js +1 -0
  66. package/dist/v1/TinyTimeout.min.js +1 -1
  67. package/dist/v1/TinyToastNotify.min.js +1 -1
  68. package/dist/v1/TinyUploadClicker.min.js +1 -1
  69. package/dist/v1/TinyUriParser.min.js +1 -0
  70. package/dist/v1/TinyVersion.min.js +1 -0
  71. package/dist/v1/TinyWebWorker.min.js +1 -0
  72. package/dist/v1/TinyWebWorkerEngine.min.js +1 -0
  73. package/dist/v1/UltraRandomMsgGen.min.js +1 -1
  74. package/dist/v1/basics/array.cjs +2 -2
  75. package/dist/v1/basics/array.d.mts +2 -0
  76. package/dist/v1/basics/array.d.mts.map +1 -1
  77. package/dist/v1/basics/array.mjs +2 -1
  78. package/dist/v1/basics/browserDetector.cjs +37 -12
  79. package/dist/v1/basics/browserDetector.d.mts +8 -0
  80. package/dist/v1/basics/browserDetector.d.mts.map +1 -1
  81. package/dist/v1/basics/browserDetector.mjs +32 -13
  82. package/dist/v1/basics/crypto.cjs +23 -0
  83. package/dist/v1/basics/crypto.d.mts +10 -0
  84. package/dist/v1/basics/crypto.d.mts.map +1 -0
  85. package/dist/v1/basics/crypto.mjs +18 -0
  86. package/dist/v1/basics/html.cjs +0 -3
  87. package/dist/v1/basics/html.d.mts.map +1 -1
  88. package/dist/v1/basics/html.mjs +0 -2
  89. package/dist/v1/basics/index.cjs +8 -1
  90. package/dist/v1/basics/index.d.mts +6 -5
  91. package/dist/v1/basics/index.d.mts.map +1 -1
  92. package/dist/v1/basics/index.mjs +6 -5
  93. package/dist/v1/basics/objChecker.cjs +88 -0
  94. package/dist/v1/basics/objChecker.d.mts +26 -0
  95. package/dist/v1/basics/objChecker.d.mts.map +1 -1
  96. package/dist/v1/basics/objChecker.mjs +74 -0
  97. package/dist/v1/basics/objFilter.cjs +234 -93
  98. package/dist/v1/basics/objFilter.d.mts +96 -22
  99. package/dist/v1/basics/objFilter.d.mts.map +1 -1
  100. package/dist/v1/basics/objFilter.mjs +216 -92
  101. package/dist/v1/basics/promiseUtils.cjs +48 -12
  102. package/dist/v1/basics/promiseUtils.d.mts +45 -12
  103. package/dist/v1/basics/promiseUtils.d.mts.map +1 -1
  104. package/dist/v1/basics/promiseUtils.mjs +47 -12
  105. package/dist/v1/basics/text.cjs +0 -12
  106. package/dist/v1/basics/text.d.mts +0 -10
  107. package/dist/v1/basics/text.d.mts.map +1 -1
  108. package/dist/v1/basics/text.mjs +0 -10
  109. package/dist/v1/index.cjs +88 -3
  110. package/dist/v1/index.d.mts +31 -6
  111. package/dist/v1/index.d.mts.map +1 -1
  112. package/dist/v1/index.mjs +32 -7
  113. package/dist/v1/jsdoc/EventEmitter.cjs +4 -0
  114. package/dist/v1/jsdoc/EventEmitter.d.mts +33 -0
  115. package/dist/v1/jsdoc/EventEmitter.d.mts.map +1 -0
  116. package/dist/v1/jsdoc/EventEmitter.mjs +18 -0
  117. package/dist/v1/libs/array/TinyArrayComparator.cjs +240 -25
  118. package/dist/v1/libs/array/TinyArrayComparator.d.mts +130 -22
  119. package/dist/v1/libs/array/TinyArrayComparator.d.mts.map +1 -1
  120. package/dist/v1/libs/array/TinyArrayComparator.mjs +210 -24
  121. package/dist/v1/libs/fs/constants.cjs +74 -0
  122. package/dist/v1/libs/fs/constants.d.mts +22 -0
  123. package/dist/v1/libs/fs/constants.d.mts.map +1 -0
  124. package/dist/v1/libs/fs/constants.mjs +53 -0
  125. package/dist/v1/libs/fs/encoding.cjs +118 -0
  126. package/dist/v1/libs/fs/encoding.d.mts +50 -0
  127. package/dist/v1/libs/fs/encoding.d.mts.map +1 -0
  128. package/dist/v1/libs/fs/encoding.mjs +102 -0
  129. package/dist/v1/libs/fs/error.cjs +188 -0
  130. package/dist/v1/libs/fs/error.d.mts +105 -0
  131. package/dist/v1/libs/fs/error.d.mts.map +1 -0
  132. package/dist/v1/libs/fs/error.mjs +158 -0
  133. package/dist/v1/libs/fs/handle.cjs +121 -0
  134. package/dist/v1/libs/fs/handle.d.mts +56 -0
  135. package/dist/v1/libs/fs/handle.d.mts.map +1 -0
  136. package/dist/v1/libs/fs/handle.mjs +100 -0
  137. package/dist/v1/libs/fs/index.cjs +700 -0
  138. package/dist/v1/libs/fs/index.d.mts +377 -0
  139. package/dist/v1/libs/fs/index.d.mts.map +1 -0
  140. package/dist/v1/libs/fs/index.mjs +630 -0
  141. package/dist/v1/libs/fs/path.cjs +234 -0
  142. package/dist/v1/libs/fs/path.d.mts +176 -0
  143. package/dist/v1/libs/fs/path.d.mts.map +1 -0
  144. package/dist/v1/libs/fs/path.mjs +197 -0
  145. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.cjs +202 -0
  146. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts +121 -0
  147. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts.map +1 -0
  148. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.mjs +172 -0
  149. package/dist/v1/libs/fs/plugins/OPFS/index.cjs +334 -0
  150. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts +98 -0
  151. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts.map +1 -0
  152. package/dist/v1/libs/fs/plugins/OPFS/index.mjs +300 -0
  153. package/dist/v1/libs/fs/stats.cjs +245 -0
  154. package/dist/v1/libs/fs/stats.d.mts +226 -0
  155. package/dist/v1/libs/fs/stats.d.mts.map +1 -0
  156. package/dist/v1/libs/fs/stats.mjs +197 -0
  157. package/dist/v1/libs/html/events/TinyIframeEvents.cjs +10 -1
  158. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts +9 -2
  159. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts.map +1 -1
  160. package/dist/v1/libs/html/events/TinyIframeEvents.mjs +8 -1
  161. package/dist/v1/libs/html/events/TinyNewWinEvents.cjs +14 -3
  162. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts +21 -5
  163. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts.map +1 -1
  164. package/dist/v1/libs/html/events/TinyNewWinEvents.mjs +12 -3
  165. package/dist/v1/libs/html/scroll/TinySmartScroller.cjs +13 -1
  166. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts +29 -2
  167. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts.map +1 -1
  168. package/dist/v1/libs/html/scroll/TinySmartScroller.mjs +11 -1
  169. package/dist/v1/libs/math/TinyAdvancedRaffle.cjs +13 -1
  170. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts +32 -2
  171. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts.map +1 -1
  172. package/dist/v1/libs/math/TinyAdvancedRaffle.mjs +11 -1
  173. package/dist/v1/libs/math/TinyTimeout.cjs +0 -14
  174. package/dist/v1/libs/math/TinyTimeout.d.mts +0 -11
  175. package/dist/v1/libs/math/TinyTimeout.d.mts.map +1 -1
  176. package/dist/v1/libs/math/TinyTimeout.mjs +0 -13
  177. package/dist/v1/libs/media/TinyMediaPlayer/index.cjs +25 -1
  178. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts +35 -2
  179. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts.map +1 -1
  180. package/dist/v1/libs/media/TinyMediaPlayer/index.mjs +23 -1
  181. package/dist/v1/libs/media/TinyMediaPlayer.cjs +2 -2
  182. package/dist/v1/libs/media/TinyMediaPlayer.d.mts +2 -2
  183. package/dist/v1/libs/media/TinyMediaPlayer.d.mts.map +1 -1
  184. package/dist/v1/libs/media/TinyMediaPlayer.mjs +2 -2
  185. package/dist/v1/libs/media/TinyRadioFm.cjs +19 -1
  186. package/dist/v1/libs/media/TinyRadioFm.d.mts +78 -2
  187. package/dist/v1/libs/media/TinyRadioFm.d.mts.map +1 -1
  188. package/dist/v1/libs/media/TinyRadioFm.mjs +17 -1
  189. package/dist/v1/libs/plugin/TinyPlugin.cjs +1630 -0
  190. package/dist/v1/libs/plugin/TinyPlugin.d.mts +753 -0
  191. package/dist/v1/libs/plugin/TinyPlugin.d.mts.map +1 -0
  192. package/dist/v1/libs/plugin/TinyPlugin.mjs +1376 -0
  193. package/dist/v1/libs/plugin/TinyVersion.cjs +204 -0
  194. package/dist/v1/libs/plugin/TinyVersion.d.mts +70 -0
  195. package/dist/v1/libs/plugin/TinyVersion.d.mts.map +1 -0
  196. package/dist/v1/libs/plugin/TinyVersion.mjs +179 -0
  197. package/dist/v1/libs/router/TinyRouter.cjs +661 -0
  198. package/dist/v1/libs/router/TinyRouter.d.mts +320 -0
  199. package/dist/v1/libs/router/TinyRouter.d.mts.map +1 -0
  200. package/dist/v1/libs/router/TinyRouter.mjs +572 -0
  201. package/dist/v1/libs/storage/TinyLocalStorage.cjs +20 -1
  202. package/dist/v1/libs/storage/TinyLocalStorage.d.mts +64 -2
  203. package/dist/v1/libs/storage/TinyLocalStorage.d.mts.map +1 -1
  204. package/dist/v1/libs/storage/TinyLocalStorage.mjs +18 -1
  205. package/dist/v1/libs/storage/TinyMapCache.cjs +373 -0
  206. package/dist/v1/libs/storage/TinyMapCache.d.mts +274 -0
  207. package/dist/v1/libs/storage/TinyMapCache.d.mts.map +1 -0
  208. package/dist/v1/libs/storage/TinyMapCache.mjs +333 -0
  209. package/dist/v1/libs/storage/TinySetMapDatabase.cjs +1167 -0
  210. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts +603 -0
  211. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts.map +1 -0
  212. package/dist/v1/libs/storage/TinySetMapDatabase.mjs +1059 -0
  213. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.cjs +126 -0
  214. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts +132 -0
  215. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts.map +1 -0
  216. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.mjs +109 -0
  217. package/dist/v1/libs/sw/browser/TinyPushManager.cjs +310 -0
  218. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts +168 -0
  219. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts.map +1 -0
  220. package/dist/v1/libs/sw/browser/TinyPushManager.mjs +264 -0
  221. package/dist/v1/libs/sw/browser/TinyServiceWorker.cjs +1060 -0
  222. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts +348 -0
  223. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts.map +1 -0
  224. package/dist/v1/libs/sw/browser/TinyServiceWorker.mjs +933 -0
  225. package/dist/v1/libs/sw/browser/plugins/TabManager.cjs +315 -0
  226. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts +178 -0
  227. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts.map +1 -0
  228. package/dist/v1/libs/sw/browser/plugins/TabManager.mjs +274 -0
  229. package/dist/v1/libs/sw/browser/utils.cjs +28 -0
  230. package/dist/v1/libs/sw/browser/utils.d.mts +8 -0
  231. package/dist/v1/libs/sw/browser/utils.d.mts.map +1 -0
  232. package/dist/v1/libs/sw/browser/utils.mjs +21 -0
  233. package/dist/v1/libs/sw/service/TinyPushRouter.cjs +222 -0
  234. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts +138 -0
  235. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts.map +1 -0
  236. package/dist/v1/libs/sw/service/TinyPushRouter.mjs +201 -0
  237. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.cjs +3016 -0
  238. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts +993 -0
  239. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts.map +1 -0
  240. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.mjs +2558 -0
  241. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.cjs +88 -0
  242. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts +32 -0
  243. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts.map +1 -0
  244. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.mjs +69 -0
  245. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.cjs +112 -0
  246. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts +31 -0
  247. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts.map +1 -0
  248. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.mjs +91 -0
  249. package/dist/v1/libs/sw/service/plugins/Ping.cjs +32 -0
  250. package/dist/v1/libs/sw/service/plugins/Ping.d.mts +9 -0
  251. package/dist/v1/libs/sw/service/plugins/Ping.d.mts.map +1 -0
  252. package/dist/v1/libs/sw/service/plugins/Ping.mjs +25 -0
  253. package/dist/v1/libs/sw/service/plugins/TabManager.cjs +457 -0
  254. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts +91 -0
  255. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts.map +1 -0
  256. package/dist/v1/libs/sw/service/plugins/TabManager.mjs +372 -0
  257. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.cjs +180 -0
  258. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts +28 -0
  259. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts.map +1 -0
  260. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.mjs +148 -0
  261. package/dist/v1/libs/sw/service/shared/TinyPushPayload.cjs +199 -0
  262. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts +80 -0
  263. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts.map +1 -0
  264. package/dist/v1/libs/sw/service/shared/TinyPushPayload.mjs +174 -0
  265. package/dist/v1/libs/sw/utils.cjs +57 -0
  266. package/dist/v1/libs/sw/utils.d.mts +173 -0
  267. package/dist/v1/libs/sw/utils.d.mts.map +1 -0
  268. package/dist/v1/libs/sw/utils.mjs +50 -0
  269. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.cjs +57 -0
  270. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts +39 -0
  271. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts.map +1 -0
  272. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.mjs +48 -0
  273. package/dist/v1/libs/text/TinyI18/Browser.cjs +64 -0
  274. package/dist/v1/libs/text/TinyI18/Browser.d.mts +47 -0
  275. package/dist/v1/libs/text/TinyI18/Browser.d.mts.map +1 -0
  276. package/dist/v1/libs/text/TinyI18/Browser.mjs +57 -0
  277. package/dist/v1/libs/text/TinyI18/Node.cjs +49 -0
  278. package/dist/v1/libs/text/TinyI18/Node.d.mts +38 -0
  279. package/dist/v1/libs/text/TinyI18/Node.d.mts.map +1 -0
  280. package/dist/v1/libs/text/TinyI18/Node.mjs +43 -0
  281. package/dist/v1/libs/text/TinyI18/browser-utils.cjs +17 -0
  282. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts +8 -0
  283. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts.map +1 -0
  284. package/dist/v1/libs/text/TinyI18/browser-utils.mjs +13 -0
  285. package/dist/v1/libs/text/{TinyI18.cjs → TinyI18/index.cjs} +205 -104
  286. package/dist/v1/libs/text/{TinyI18.d.mts → TinyI18/index.d.mts} +141 -92
  287. package/dist/v1/libs/text/TinyI18/index.d.mts.map +1 -0
  288. package/dist/v1/libs/text/{TinyI18.mjs → TinyI18/index.mjs} +195 -101
  289. package/dist/v1/libs/tools/TinyBrowserMonitor.cjs +1088 -0
  290. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts +621 -0
  291. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts.map +1 -0
  292. package/dist/v1/libs/tools/TinyBrowserMonitor.mjs +940 -0
  293. package/dist/v1/libs/tools/TinyDebugger.cjs +180 -19
  294. package/dist/v1/libs/tools/TinyDebugger.d.mts +220 -24
  295. package/dist/v1/libs/tools/TinyDebugger.d.mts.map +1 -1
  296. package/dist/v1/libs/tools/TinyDebugger.mjs +161 -19
  297. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.cjs +256 -0
  298. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts +125 -0
  299. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts.map +1 -0
  300. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.mjs +223 -0
  301. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.cjs +23 -0
  302. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts +17 -0
  303. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts.map +1 -0
  304. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.mjs +19 -0
  305. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.cjs +23 -0
  306. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts +17 -0
  307. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts.map +1 -0
  308. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.mjs +19 -0
  309. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.cjs +390 -0
  310. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts +9 -0
  311. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts.map +1 -0
  312. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.mjs +387 -0
  313. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.cjs +2 -0
  314. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts +27 -0
  315. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts.map +1 -0
  316. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.mjs +12 -0
  317. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/LICENSE +53 -0
  318. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.cjs +405 -0
  319. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts +34 -0
  320. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts.map +1 -0
  321. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.mjs +342 -0
  322. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.cjs +23 -0
  323. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts +17 -0
  324. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts.map +1 -0
  325. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.mjs +19 -0
  326. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.cjs +327 -0
  327. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts +9 -0
  328. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts.map +1 -0
  329. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.mjs +324 -0
  330. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.cjs +268 -0
  331. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts +107 -0
  332. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts.map +1 -0
  333. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.mjs +238 -0
  334. package/dist/v1/libs/tools/TinyPasswordValidator.cjs +491 -0
  335. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts +246 -0
  336. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts.map +1 -0
  337. package/dist/v1/libs/tools/TinyPasswordValidator.mjs +434 -0
  338. package/dist/v1/libs/tools/TinyPkgExportValidator.cjs +48 -0
  339. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts +14 -0
  340. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts.map +1 -1
  341. package/dist/v1/libs/tools/TinyPkgExportValidator.mjs +44 -0
  342. package/dist/v1/libs/tools/TinySiteMap.cjs +1029 -0
  343. package/dist/v1/libs/tools/TinySiteMap.d.mts +429 -0
  344. package/dist/v1/libs/tools/TinySiteMap.d.mts.map +1 -0
  345. package/dist/v1/libs/tools/TinySiteMap.mjs +910 -0
  346. package/dist/v1/libs/tools/TinySiteMapStream.cjs +121 -0
  347. package/dist/v1/libs/tools/TinySiteMapStream.d.mts +51 -0
  348. package/dist/v1/libs/tools/TinySiteMapStream.d.mts.map +1 -0
  349. package/dist/v1/libs/tools/TinySiteMapStream.mjs +85 -0
  350. package/dist/v1/libs/tools/TinyURLSecurityVerifier.cjs +444 -0
  351. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts +217 -0
  352. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts.map +1 -0
  353. package/dist/v1/libs/tools/TinyURLSecurityVerifier.mjs +394 -0
  354. package/dist/v1/libs/tools/TinyUriParser/BlueSky.cjs +613 -0
  355. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts +152 -0
  356. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts.map +1 -0
  357. package/dist/v1/libs/tools/TinyUriParser/BlueSky.mjs +527 -0
  358. package/dist/v1/libs/tools/TinyUriParser/Discord.cjs +1119 -0
  359. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts +306 -0
  360. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts.map +1 -0
  361. package/dist/v1/libs/tools/TinyUriParser/Discord.mjs +968 -0
  362. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.cjs +469 -0
  363. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts +80 -0
  364. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts.map +1 -0
  365. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.mjs +379 -0
  366. package/dist/v1/libs/tools/TinyUriParser.cjs +217 -0
  367. package/dist/v1/libs/tools/TinyUriParser.d.mts +109 -0
  368. package/dist/v1/libs/tools/TinyUriParser.d.mts.map +1 -0
  369. package/dist/v1/libs/tools/TinyUriParser.mjs +183 -0
  370. package/dist/v1/libs/utils/TinyCloner.cjs +466 -0
  371. package/dist/v1/libs/utils/TinyCloner.d.mts +221 -0
  372. package/dist/v1/libs/utils/TinyCloner.d.mts.map +1 -0
  373. package/dist/v1/libs/utils/TinyCloner.mjs +416 -0
  374. package/dist/v1/libs/utils/TinyPromiseQueue.cjs +1 -1
  375. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts +2 -2
  376. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts.map +1 -1
  377. package/dist/v1/libs/utils/TinyPromiseQueue.mjs +1 -1
  378. package/dist/v1/libs/utils/TinyThrottledApi.cjs +333 -0
  379. package/dist/v1/libs/utils/TinyThrottledApi.d.mts +163 -0
  380. package/dist/v1/libs/utils/TinyThrottledApi.d.mts.map +1 -0
  381. package/dist/v1/libs/utils/TinyThrottledApi.mjs +294 -0
  382. package/dist/v1/libs/worker/browser/TinyWebWorker.cjs +342 -0
  383. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts +97 -0
  384. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts.map +1 -0
  385. package/dist/v1/libs/worker/browser/TinyWebWorker.mjs +305 -0
  386. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.cjs +346 -0
  387. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts +127 -0
  388. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts.map +1 -0
  389. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.mjs +304 -0
  390. package/dist/v1/regexp/Email.cjs +185 -0
  391. package/dist/v1/regexp/Email.d.mts +73 -0
  392. package/dist/v1/regexp/Email.d.mts.map +1 -0
  393. package/dist/v1/regexp/Email.mjs +153 -0
  394. package/dist/v1/regexp/Glob.cjs +293 -0
  395. package/dist/v1/regexp/Glob.d.mts +45 -0
  396. package/dist/v1/regexp/Glob.d.mts.map +1 -0
  397. package/dist/v1/regexp/Glob.mjs +260 -0
  398. package/dist/v1/regexp/Ipv4.cjs +57 -0
  399. package/dist/v1/regexp/Ipv4.d.mts +29 -0
  400. package/dist/v1/regexp/Ipv4.d.mts.map +1 -0
  401. package/dist/v1/regexp/Ipv4.mjs +45 -0
  402. package/dist/v1/regexp/Ipv6.cjs +67 -0
  403. package/dist/v1/regexp/Ipv6.d.mts +29 -0
  404. package/dist/v1/regexp/Ipv6.d.mts.map +1 -0
  405. package/dist/v1/regexp/Ipv6.mjs +54 -0
  406. package/dist/v1/regexp/SegmentExtractor.cjs +145 -0
  407. package/dist/v1/regexp/SegmentExtractor.d.mts +91 -0
  408. package/dist/v1/regexp/SegmentExtractor.d.mts.map +1 -0
  409. package/dist/v1/regexp/SegmentExtractor.mjs +116 -0
  410. package/dist/v1/regexp/UrlDetector.cjs +125 -0
  411. package/dist/v1/regexp/UrlDetector.d.mts +67 -0
  412. package/dist/v1/regexp/UrlDetector.d.mts.map +1 -0
  413. package/dist/v1/regexp/UrlDetector.mjs +102 -0
  414. package/dist/v1/regexp/Username/index.cjs +233 -0
  415. package/dist/v1/regexp/Username/index.d.mts +77 -0
  416. package/dist/v1/regexp/Username/index.d.mts.map +1 -0
  417. package/dist/v1/regexp/Username/index.mjs +199 -0
  418. package/dist/v1/regexp/Username/jsDoc.cjs +2 -0
  419. package/dist/v1/regexp/Username/jsDoc.d.mts +57 -0
  420. package/dist/v1/regexp/Username/jsDoc.d.mts.map +1 -0
  421. package/dist/v1/regexp/Username/jsDoc.mjs +18 -0
  422. package/dist/v1/regexp/Username/templates/BlueSky.cjs +56 -0
  423. package/dist/v1/regexp/Username/templates/BlueSky.d.mts +35 -0
  424. package/dist/v1/regexp/Username/templates/BlueSky.d.mts.map +1 -0
  425. package/dist/v1/regexp/Username/templates/BlueSky.mjs +52 -0
  426. package/dist/v1/regexp/Username/templates/Discord.cjs +505 -0
  427. package/dist/v1/regexp/Username/templates/Discord.d.mts +209 -0
  428. package/dist/v1/regexp/Username/templates/Discord.d.mts.map +1 -0
  429. package/dist/v1/regexp/Username/templates/Discord.mjs +458 -0
  430. package/dist/v1/regexp/Username/templates/MatrixProtocol.cjs +143 -0
  431. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts +70 -0
  432. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts.map +1 -0
  433. package/dist/v1/regexp/Username/templates/MatrixProtocol.mjs +128 -0
  434. package/dist/v1/regexp/Username/templates/deprecated/Discord.cjs +24 -0
  435. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts +17 -0
  436. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts.map +1 -0
  437. package/dist/v1/regexp/Username/templates/deprecated/Discord.mjs +20 -0
  438. package/dist/v1/regexp/Username/templates/index.cjs +11 -0
  439. package/dist/v1/regexp/Username/templates/index.d.mts +5 -0
  440. package/dist/v1/regexp/Username/templates/index.d.mts.map +1 -0
  441. package/dist/v1/regexp/Username/templates/index.mjs +4 -0
  442. package/dist/v1/regexp/index.cjs +41 -0
  443. package/dist/v1/regexp/index.d.mts +9 -0
  444. package/dist/v1/regexp/index.d.mts.map +1 -0
  445. package/dist/v1/regexp/index.mjs +8 -0
  446. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.cjs +64 -0
  447. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts +11 -0
  448. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts.map +1 -0
  449. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.mjs +51 -0
  450. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.cjs +66 -0
  451. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts +11 -0
  452. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts.map +1 -0
  453. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.mjs +51 -0
  454. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.cjs +39 -0
  455. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts +11 -0
  456. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts.map +1 -0
  457. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.mjs +28 -0
  458. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.cjs +494 -0
  459. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts +142 -0
  460. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts.map +1 -0
  461. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.mjs +445 -0
  462. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.cjs +30 -4
  463. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts +5 -2
  464. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts.map +1 -1
  465. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs +29 -5
  466. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.cjs +135 -0
  467. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts +83 -0
  468. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts.map +1 -0
  469. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.mjs +120 -0
  470. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.cjs +127 -0
  471. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts +95 -0
  472. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts.map +1 -0
  473. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.mjs +109 -0
  474. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.cjs +83 -0
  475. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts +46 -0
  476. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts.map +1 -0
  477. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.mjs +71 -0
  478. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.cjs +493 -0
  479. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts +67 -0
  480. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts.map +1 -0
  481. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.mjs +399 -0
  482. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.cjs +35 -0
  483. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts +6 -0
  484. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts.map +1 -0
  485. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.mjs +29 -0
  486. package/docs/info/RegExp.md +74 -0
  487. package/docs/v1/Exports.md +101 -0
  488. package/docs/v1/README.md +113 -15
  489. package/docs/v1/basics/asyncReplace.md +2 -0
  490. package/docs/v1/basics/browserDetector.md +28 -11
  491. package/docs/v1/basics/crypto.md +85 -0
  492. package/docs/v1/basics/deprecated/html.md +2 -0
  493. package/docs/v1/basics/deprecated/objFilter.md +2 -0
  494. package/docs/v1/basics/html.md +2 -0
  495. package/docs/v1/basics/objChecker.md +55 -0
  496. package/docs/v1/basics/objFilter.md +57 -86
  497. package/docs/v1/basics/promiseUtils.md +12 -3
  498. package/docs/v1/basics/text.md +0 -1
  499. package/docs/v1/libs/array/TinyArrayComparator.md +50 -39
  500. package/docs/v1/libs/fs/TinyFS.md +752 -0
  501. package/docs/v1/libs/fs/TinyOPFSFileSystem.md +495 -0
  502. package/docs/v1/libs/fs/TinyStorageBucketFileSystem.md +407 -0
  503. package/docs/v1/libs/plugin/TinyPlugin.md +441 -0
  504. package/docs/v1/libs/plugin/TinyVersion.md +145 -0
  505. package/docs/v1/libs/router/TinyRouter.md +216 -0
  506. package/docs/v1/libs/storage/TinyMapCache.md +219 -0
  507. package/docs/v1/libs/storage/TinySetMapDatabase.md +478 -0
  508. package/docs/v1/libs/sw/browser/TinyNotificationAdapter.md +280 -0
  509. package/docs/v1/libs/sw/browser/TinyPushManager.md +782 -0
  510. package/docs/v1/libs/sw/browser/TinyServiceWorker.md +365 -0
  511. package/docs/v1/libs/sw/browser/plugins/TabManager.md +133 -0
  512. package/docs/v1/libs/sw/service/TinyPushRouter.md +314 -0
  513. package/docs/v1/libs/sw/service/TinyServiceWorkerEngine.md +748 -0
  514. package/docs/v1/libs/sw/service/plugins/GlobBypassPlugin.md +229 -0
  515. package/docs/v1/libs/sw/service/plugins/GlobCachePlugin.md +91 -0
  516. package/docs/v1/libs/sw/service/plugins/Ping.md +36 -0
  517. package/docs/v1/libs/sw/service/plugins/TabManager.md +64 -0
  518. package/docs/v1/libs/sw/service/plugins/ViteFileDetector.md +92 -0
  519. package/docs/v1/libs/sw/service/shared/TinyPushPayload.md +316 -0
  520. package/docs/v1/libs/text/TinyI18.md +80 -56
  521. package/docs/v1/libs/tools/TinyBrowserMonitor.md +170 -0
  522. package/docs/v1/libs/tools/TinyDebugger.md +117 -1
  523. package/docs/v1/libs/tools/TinyHtmlTagRegexBuilder.md +141 -0
  524. package/docs/v1/libs/tools/TinyHttpResponseRegistry.md +129 -0
  525. package/docs/v1/libs/tools/TinyPasswordValidator.md +153 -0
  526. package/docs/v1/libs/tools/TinyPkgExportValidator.md +45 -1
  527. package/docs/v1/libs/tools/TinySiteMap.md +134 -0
  528. package/docs/v1/libs/tools/TinySiteMapStream.md +97 -0
  529. package/docs/v1/libs/tools/TinyURLSecurityVerifier.md +146 -0
  530. package/docs/v1/libs/tools/TinyUriParser/Discord.md +374 -0
  531. package/docs/v1/libs/tools/TinyUriParser/MatrixProtocol.md +54 -0
  532. package/docs/v1/libs/tools/TinyUriParser.md +128 -0
  533. package/docs/v1/libs/utils/TinyCloner.md +126 -0
  534. package/docs/v1/libs/utils/TinyPromiseQueue.md +1 -1
  535. package/docs/v1/libs/utils/TinyThrottledApi.md +219 -0
  536. package/docs/v1/libs/worker/browser/TinyWebWorker.md +331 -0
  537. package/docs/v1/libs/worker/engine/TinyWebWorkerEngine.md +137 -0
  538. package/docs/v1/regexp/Email.md +127 -0
  539. package/docs/v1/regexp/Glob.md +155 -0
  540. package/docs/v1/regexp/IPv4.md +103 -0
  541. package/docs/v1/regexp/IPv6.md +122 -0
  542. package/docs/v1/regexp/SegmentExtractor.md +120 -0
  543. package/docs/v1/regexp/UrlDetector.md +117 -0
  544. package/docs/v1/regexp/Username/Base.md +131 -0
  545. package/docs/v1/regexp/Username/Discord.md +267 -0
  546. package/docs/v1/regexp/Username/MatrixProtocol.md +131 -0
  547. package/docs/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters.md +565 -0
  548. package/docs/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.md +19 -7
  549. package/docs/v1/webTemplates/media/MediaValidator/v1/Browser.md +123 -0
  550. package/docs/v1/webTemplates/media/MediaValidator/v1/Node.md +136 -0
  551. package/docs/v1/webTemplates/multiformats/14.0/IPFSHasher.md +310 -0
  552. package/docs/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.md +131 -0
  553. package/docs/v1/webTemplates/vite/7.3/plugins/githubUtils.md +50 -0
  554. package/package.json +340 -22
  555. package/types/EventEmitter.d.ts +48 -0
  556. package/dist/v1/libs/text/TinyI18.d.mts.map +0 -1
@@ -0,0 +1,333 @@
1
+ 'use strict';
2
+
3
+ var events = require('events');
4
+ var TinyPromiseQueue = require('./TinyPromiseQueue.cjs');
5
+ var promiseUtils = require('../../basics/promiseUtils.cjs');
6
+ var TinyTimeout = require('../math/TinyTimeout.cjs');
7
+ var tools = require('./tools.cjs');
8
+
9
+ const checkDestroy = tools.createCheckDestroyed('TinyThrottledApi');
10
+
11
+ /**
12
+ * @template T
13
+ * @typedef {Promise<T>} QueueResult
14
+ * Represents the eventual result of a queued operation.
15
+ */
16
+
17
+ /**
18
+ * Event map for {@link TinyThrottledApi}.
19
+ * @typedef {Object} TinyThrottledApiEvents
20
+ * @property {(id: string) => void} ExecTask - Emitted when a task starts executing.
21
+ * @property {(id: string) => void} TaskEnded - Emitted when a task finishes executing.
22
+ * @property {(id: string) => void} WaitingTask - Emitted when a task is queued and waiting for a slot.
23
+ * @property {() => void} Destroyed - Emitted when the instance is destroyed.
24
+ * @property {(value: number) => void} SetConcurrencyLimit - Emitted when the concurrency limit changes.
25
+ * @property {(value: number) => void} SetTimeoutValue - Emitted when the timeout value changes.
26
+ * @property {(value: number) => void} SetTimeoutLimit - Emitted when the timeout limit changes.
27
+ */
28
+
29
+ /** @type {new () => import('../../jsdoc/EventEmitter.mjs').ICustomEventEmitter<TinyThrottledApiEvents>} */
30
+ const TypedEventEmitter = /** @type {any} */ (events.EventEmitter);
31
+
32
+ /**
33
+ * A client that manages asynchronous requests with a concurrency limit.
34
+ * It uses TinyPromiseQueue to manage waiting tasks and waitForTrue to poll for availability.
35
+ * @template {(...args: any) => Promise<any>} API
36
+ */
37
+ class TinyThrottledApi extends TypedEventEmitter {
38
+ static TinyTimeout = TinyTimeout;
39
+ /** @type {number} The current number of active asynchronous operations. */
40
+ #activeCount = 0;
41
+ /** @type {number} The maximum number of concurrent operations allowed. */
42
+ #concurrencyLimit;
43
+ /** @type {TinyPromiseQueue} The internal queue used to manage pending tasks. */
44
+ #queue = new TinyPromiseQueue();
45
+ /** @type {API} The target API function to be executed. */
46
+ #api;
47
+ /** @type {TinyTimeout|null} The optional timeout instance to regulate execution frequency. */
48
+ #timeoutInstance;
49
+ /** @type {number} - Base delay multiplier in milliseconds. */
50
+ #timeoutValue = 100;
51
+ /** @type {number|null} - Optional maximum delay cap. */
52
+ #timeoutLimit = 5000;
53
+ /** @type {boolean} Indicates whether the instance has been destroyed. */
54
+ #isDestroyed = false;
55
+ /** @type {boolean} Indicates whether the first execution should be delayed by the timeout. */
56
+ #timeoutFirst = false;
57
+
58
+ /**
59
+ * Initializes a new instance of the TinyThrottledApi class.
60
+ *
61
+ * @param {number} concurrencyLimit - The maximum number of simultaneous requests.
62
+ * @param {API} api - The API implementation.
63
+ * @param {TinyTimeout|null} [timeoutInstance=null] - Optional TinyTimeout instance to regulate execution frequency.
64
+ * @throws {TypeError} If concurrencyLimit is not a positive number.
65
+ * @throws {TypeError} If API is not a function.
66
+ */
67
+ constructor(concurrencyLimit, api, timeoutInstance = null) {
68
+ super();
69
+ if (typeof concurrencyLimit !== 'number' || concurrencyLimit <= 0) {
70
+ throw new TypeError('Concurrency limit must be a positive number.');
71
+ }
72
+ if (typeof api !== 'function') {
73
+ throw new TypeError('API must be a function.');
74
+ }
75
+ if (
76
+ typeof timeoutInstance !== 'undefined' &&
77
+ timeoutInstance !== null &&
78
+ !(timeoutInstance instanceof TinyTimeout)
79
+ ) {
80
+ throw new TypeError('timeoutInstance must be a TinyTimeout instance.');
81
+ }
82
+
83
+ this.#concurrencyLimit = concurrencyLimit;
84
+ this.#api = api;
85
+ this.#timeoutInstance = timeoutInstance ?? null;
86
+ }
87
+
88
+ /**
89
+ * Executes an API request, respecting the concurrency limit and optional rate limiting.
90
+ *
91
+ * @param {Parameters<API>} args
92
+ * @returns {QueueResult<ReturnType<API>>} A promise that resolves with the API result.
93
+ * @throws {TypeError} If the internal state is corrupted.
94
+ */
95
+ async exec(...args) {
96
+ checkDestroy(this.#isDestroyed);
97
+ const id = crypto.randomUUID(); // Using UUID for better collision resistance
98
+
99
+ // If we are under the limit, reserve the slot SYNCHRONOUSLY to prevent race conditions.
100
+ if (this.#activeCount < this.#concurrencyLimit) {
101
+ this.#activeCount++;
102
+ this.emit('ExecTask', id);
103
+ const final = await this.#performRequest(...args);
104
+ this.emit('TaskEnded', id);
105
+ return final;
106
+ }
107
+
108
+ // If we reached the limit, queue a task that waits for a slot.
109
+ return this.#queue.enqueue(
110
+ async () => {
111
+ this.emit('WaitingTask', id);
112
+ // The task in the queue waits until a slot is available via polling.
113
+ const waitCounter = () => promiseUtils.waitForTrue(() => this.#activeCount < this.#concurrencyLimit);
114
+
115
+ // If a TinyTimeout instance is provided, we wait for its next scheduled "tick".
116
+ // This introduces a dynamic delay that increases as more tasks are processed.
117
+ const waitTimeout = async () => {
118
+ if (this.#timeoutInstance) {
119
+ await new Promise((resolve) => {
120
+ // We use a constant ID so the frequency is tracked across all calls to this instance.
121
+ if (this.#timeoutInstance)
122
+ this.#timeoutInstance.set(
123
+ 'api_throttle',
124
+ resolve,
125
+ this.#timeoutValue,
126
+ this.#timeoutLimit,
127
+ );
128
+ else resolve(undefined);
129
+ });
130
+ }
131
+ };
132
+
133
+ if (this.#timeoutFirst) {
134
+ await waitTimeout();
135
+ await waitCounter();
136
+ } else {
137
+ await waitCounter();
138
+ await waitTimeout();
139
+ }
140
+
141
+ // Once available and the throttle allows, we reserve the slot.
142
+ this.#activeCount++;
143
+ this.emit('ExecTask', id);
144
+ const final = await this.#performRequest(...args);
145
+ this.emit('TaskEnded', id);
146
+ return final;
147
+ },
148
+ undefined,
149
+ id,
150
+ );
151
+ }
152
+
153
+ /**
154
+ * Cleans up the instance, removing all listeners and stopping pending tasks.
155
+ * @returns {void}
156
+ */
157
+ destroy() {
158
+ if (this.#isDestroyed) return;
159
+ this.removeAllListeners();
160
+ this.#isDestroyed = true;
161
+ this.emit('Destroyed');
162
+ }
163
+
164
+ /**
165
+ * Internal method to handle the actual execution and counter management.
166
+ *
167
+ * @param {Parameters<API>} args
168
+ * @returns {QueueResult<ReturnType<API>>}
169
+ */
170
+ async #performRequest(...args) {
171
+ try {
172
+ const apiFunction = this.#api;
173
+ return await apiFunction(...args);
174
+ } finally {
175
+ // The decrement happens here, ensuring the slot is released even on failure.
176
+ this.#activeCount--;
177
+ }
178
+ }
179
+
180
+ /**
181
+ * Returns whether the instance has been destroyed.
182
+ * @returns {boolean}
183
+ */
184
+ get isDestroyed() {
185
+ return this.#isDestroyed;
186
+ }
187
+
188
+ /**
189
+ * Gets the internal task queue.
190
+ * @returns {TinyPromiseQueue} The internal task queue.
191
+ */
192
+ get queue() {
193
+ checkDestroy(this.#isDestroyed);
194
+ return this.#queue;
195
+ }
196
+
197
+ /**
198
+ * Gets the original API function.
199
+ * @returns {API} The original API function.
200
+ */
201
+ get api() {
202
+ checkDestroy(this.#isDestroyed);
203
+ return this.#api;
204
+ }
205
+
206
+ /**
207
+ * Gets the current concurrency limit.
208
+ * @returns {number} The current concurrency limit.
209
+ */
210
+ get concurrencyLimit() {
211
+ checkDestroy(this.#isDestroyed);
212
+ return this.#concurrencyLimit;
213
+ }
214
+
215
+ /**
216
+ * Sets a new concurrency limit.
217
+ * @param {number} value - The new maximum number of simultaneous requests.
218
+ * @throws {TypeError} If value is not a positive number.
219
+ */
220
+ set concurrencyLimit(value) {
221
+ checkDestroy(this.#isDestroyed);
222
+ if (typeof value !== 'number' || value <= 0) {
223
+ throw new TypeError('Concurrency limit must be a positive number.');
224
+ }
225
+ this.#concurrencyLimit = value;
226
+ this.emit('SetConcurrencyLimit', value);
227
+ }
228
+
229
+ /**
230
+ * Gets the current TinyTimeout instance used for rate limiting.
231
+ * @returns {TinyTimeout|null}
232
+ */
233
+ get timeoutInstance() {
234
+ checkDestroy(this.#isDestroyed);
235
+ return this.#timeoutInstance;
236
+ }
237
+
238
+ /**
239
+ * Gets the current base delay multiplier in milliseconds.
240
+ * @returns {number}
241
+ */
242
+ get timeoutValue() {
243
+ checkDestroy(this.#isDestroyed);
244
+ return this.#timeoutValue;
245
+ }
246
+
247
+ /**
248
+ * Sets a new base delay multiplier in milliseconds.
249
+ * @param {number} value - The new base delay multiplier.
250
+ * @throws {TypeError} If the value is not a number.
251
+ * @throws {RangeError} If the value is a negative number.
252
+ */
253
+ set timeoutValue(value) {
254
+ checkDestroy(this.#isDestroyed);
255
+ if (typeof value !== 'number') {
256
+ throw new TypeError('Timeout value must be a number.');
257
+ }
258
+ if (value < 0) {
259
+ throw new RangeError('Timeout value cannot be negative.');
260
+ }
261
+ this.#timeoutValue = value;
262
+ this.emit('SetTimeoutValue', value);
263
+ }
264
+
265
+ /**
266
+ * Gets the current maximum delay cap.
267
+ * @returns {number|null}
268
+ */
269
+ get timeoutLimit() {
270
+ checkDestroy(this.#isDestroyed);
271
+ return this.#timeoutLimit;
272
+ }
273
+
274
+ /**
275
+ * Gets whether the first execution should be delayed by the timeout.
276
+ * @returns {boolean}
277
+ */
278
+ get timeoutFirst() {
279
+ return this.#timeoutFirst;
280
+ }
281
+
282
+ /**
283
+ * Sets whether the first execution should be delayed by the timeout.
284
+ * @param {boolean} value - The new boolean value.
285
+ * @throws {TypeError} If the value is not a boolean.
286
+ */
287
+ set timeoutFirst(value) {
288
+ if (typeof value !== 'boolean') {
289
+ throw new TypeError('timeoutFirst must be a boolean.');
290
+ }
291
+ this.#timeoutFirst = value;
292
+ }
293
+
294
+ /**
295
+ * Sets a new maximum delay cap.
296
+ * @param {number} value - The new maximum delay cap.
297
+ * @throws {TypeError} If the value is not a number.
298
+ * @throws {RangeError} If the value is a negative number.
299
+ */
300
+ set timeoutLimit(value) {
301
+ checkDestroy(this.#isDestroyed);
302
+ if (typeof value !== 'number') {
303
+ throw new TypeError('Timeout limit must be a number.');
304
+ }
305
+ if (value < 0) {
306
+ throw new RangeError('Timeout limit cannot be negative.');
307
+ }
308
+ this.#timeoutLimit = value;
309
+ this.emit('SetTimeoutLimit', value);
310
+ }
311
+
312
+ /**
313
+ * Returns the number of currently active requests.
314
+ *
315
+ * @returns {number}
316
+ */
317
+ get activeCount() {
318
+ checkDestroy(this.#isDestroyed);
319
+ return this.#activeCount;
320
+ }
321
+
322
+ /**
323
+ * Returns the number of tasks waiting in the queue.
324
+ *
325
+ * @returns {number}
326
+ */
327
+ get queuedCount() {
328
+ checkDestroy(this.#isDestroyed);
329
+ return this.#queue.getQueuedIds().length;
330
+ }
331
+ }
332
+
333
+ module.exports = TinyThrottledApi;
@@ -0,0 +1,163 @@
1
+ import TinyPromiseQueue from './TinyPromiseQueue.mjs';
2
+ import TinyTimeout from '../math/TinyTimeout.mjs';
3
+ export type QueueResult<T> = Promise<T>;
4
+ export type TinyThrottledApiEvents = {
5
+ /**
6
+ * - Emitted when a task starts executing.
7
+ */
8
+ ExecTask: (id: string) => void;
9
+ /**
10
+ * - Emitted when a task finishes executing.
11
+ */
12
+ TaskEnded: (id: string) => void;
13
+ /**
14
+ * - Emitted when a task is queued and waiting for a slot.
15
+ */
16
+ WaitingTask: (id: string) => void;
17
+ /**
18
+ * - Emitted when the instance is destroyed.
19
+ */
20
+ Destroyed: () => void;
21
+ /**
22
+ * - Emitted when the concurrency limit changes.
23
+ */
24
+ SetConcurrencyLimit: (value: number) => void;
25
+ /**
26
+ * - Emitted when the timeout value changes.
27
+ */
28
+ SetTimeoutValue: (value: number) => void;
29
+ /**
30
+ * - Emitted when the timeout limit changes.
31
+ */
32
+ SetTimeoutLimit: (value: number) => void;
33
+ };
34
+ /**
35
+ * @template T
36
+ * @typedef {Promise<T>} QueueResult
37
+ * Represents the eventual result of a queued operation.
38
+ */
39
+ /**
40
+ * Event map for {@link TinyThrottledApi}.
41
+ * @typedef {Object} TinyThrottledApiEvents
42
+ * @property {(id: string) => void} ExecTask - Emitted when a task starts executing.
43
+ * @property {(id: string) => void} TaskEnded - Emitted when a task finishes executing.
44
+ * @property {(id: string) => void} WaitingTask - Emitted when a task is queued and waiting for a slot.
45
+ * @property {() => void} Destroyed - Emitted when the instance is destroyed.
46
+ * @property {(value: number) => void} SetConcurrencyLimit - Emitted when the concurrency limit changes.
47
+ * @property {(value: number) => void} SetTimeoutValue - Emitted when the timeout value changes.
48
+ * @property {(value: number) => void} SetTimeoutLimit - Emitted when the timeout limit changes.
49
+ */
50
+ /** @type {new () => import('../../jsdoc/EventEmitter.mjs').ICustomEventEmitter<TinyThrottledApiEvents>} */
51
+ declare const TypedEventEmitter: new () => import('../../jsdoc/EventEmitter.mjs').ICustomEventEmitter<TinyThrottledApiEvents>;
52
+ /**
53
+ * A client that manages asynchronous requests with a concurrency limit.
54
+ * It uses TinyPromiseQueue to manage waiting tasks and waitForTrue to poll for availability.
55
+ * @template {(...args: any) => Promise<any>} API
56
+ */
57
+ declare class TinyThrottledApi<API extends (...args: any) => Promise<any>> extends TypedEventEmitter {
58
+ #private;
59
+ static TinyTimeout: typeof TinyTimeout;
60
+ /**
61
+ * Initializes a new instance of the TinyThrottledApi class.
62
+ *
63
+ * @param {number} concurrencyLimit - The maximum number of simultaneous requests.
64
+ * @param {API} api - The API implementation.
65
+ * @param {TinyTimeout|null} [timeoutInstance=null] - Optional TinyTimeout instance to regulate execution frequency.
66
+ * @throws {TypeError} If concurrencyLimit is not a positive number.
67
+ * @throws {TypeError} If API is not a function.
68
+ */
69
+ constructor(concurrencyLimit: number, api: API, timeoutInstance?: TinyTimeout | null);
70
+ /**
71
+ * Executes an API request, respecting the concurrency limit and optional rate limiting.
72
+ *
73
+ * @param {Parameters<API>} args
74
+ * @returns {QueueResult<ReturnType<API>>} A promise that resolves with the API result.
75
+ * @throws {TypeError} If the internal state is corrupted.
76
+ */
77
+ exec(...args: Parameters<API>): QueueResult<ReturnType<API>>;
78
+ /**
79
+ * Cleans up the instance, removing all listeners and stopping pending tasks.
80
+ * @returns {void}
81
+ */
82
+ destroy(): void;
83
+ /**
84
+ * Returns whether the instance has been destroyed.
85
+ * @returns {boolean}
86
+ */
87
+ get isDestroyed(): boolean;
88
+ /**
89
+ * Gets the internal task queue.
90
+ * @returns {TinyPromiseQueue} The internal task queue.
91
+ */
92
+ get queue(): TinyPromiseQueue;
93
+ /**
94
+ * Gets the original API function.
95
+ * @returns {API} The original API function.
96
+ */
97
+ get api(): API;
98
+ /**
99
+ * Gets the current concurrency limit.
100
+ * @returns {number} The current concurrency limit.
101
+ */
102
+ get concurrencyLimit(): number;
103
+ /**
104
+ * Sets a new concurrency limit.
105
+ * @param {number} value - The new maximum number of simultaneous requests.
106
+ * @throws {TypeError} If value is not a positive number.
107
+ */
108
+ set concurrencyLimit(value: number);
109
+ /**
110
+ * Gets the current TinyTimeout instance used for rate limiting.
111
+ * @returns {TinyTimeout|null}
112
+ */
113
+ get timeoutInstance(): TinyTimeout | null;
114
+ /**
115
+ * Gets the current base delay multiplier in milliseconds.
116
+ * @returns {number}
117
+ */
118
+ get timeoutValue(): number;
119
+ /**
120
+ * Sets a new base delay multiplier in milliseconds.
121
+ * @param {number} value - The new base delay multiplier.
122
+ * @throws {TypeError} If the value is not a number.
123
+ * @throws {RangeError} If the value is a negative number.
124
+ */
125
+ set timeoutValue(value: number);
126
+ /**
127
+ * Gets the current maximum delay cap.
128
+ * @returns {number|null}
129
+ */
130
+ get timeoutLimit(): number | null;
131
+ /**
132
+ * Gets whether the first execution should be delayed by the timeout.
133
+ * @returns {boolean}
134
+ */
135
+ get timeoutFirst(): boolean;
136
+ /**
137
+ * Sets whether the first execution should be delayed by the timeout.
138
+ * @param {boolean} value - The new boolean value.
139
+ * @throws {TypeError} If the value is not a boolean.
140
+ */
141
+ set timeoutFirst(value: boolean);
142
+ /**
143
+ * Sets a new maximum delay cap.
144
+ * @param {number} value - The new maximum delay cap.
145
+ * @throws {TypeError} If the value is not a number.
146
+ * @throws {RangeError} If the value is a negative number.
147
+ */
148
+ set timeoutLimit(value: number);
149
+ /**
150
+ * Returns the number of currently active requests.
151
+ *
152
+ * @returns {number}
153
+ */
154
+ get activeCount(): number;
155
+ /**
156
+ * Returns the number of tasks waiting in the queue.
157
+ *
158
+ * @returns {number}
159
+ */
160
+ get queuedCount(): number;
161
+ }
162
+ export default TinyThrottledApi;
163
+ //# sourceMappingURL=TinyThrottledApi.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TinyThrottledApi.d.mts","sourceRoot":"","sources":["../../../../src/v1/libs/utils/TinyThrottledApi.mjs"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;AAEtD,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAO/C,YAAsB,WAAW,CADvB,CAAC,IACD,OAAO,CAAC,CAAC,CAAC,CAEtB;AAIE,YAAkB,sBAAsB,GACxC;;;;IAAiC,QAAQ,EAA9B,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAC/B;;;;IAAiC,SAAS,EAA/B,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAC/B;;;;IAAiC,WAAW,EAAjC,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAC/B;;;;IAAuB,SAAS,EAArB,MAAM,IAAI,CACrB;;;;IAAoC,mBAAmB,EAA5C,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAClC;;;;IAAoC,eAAe,EAAxC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAClC;;;;IAAoC,eAAe,EAAxC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CACpC;CAAA,CAAA;AAhBD;;;;GAIG;AAEH;;;;;;;;;;GAUG;AAEH,2GAA2G;AAC3G,QAAA,MAAM,iBAAiB,EADZ,UAAU,OAAO,8BAA8B,EAAE,mBAAmB,CAAC,sBAAsB,CAC3C,CAAC;AAE5D;;;;GAIG;AACH,cAAM,gBAAgB,CAFwB,GAAG,SAAnC,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAM,CAE1B,SAAQ,iBAAiB;;IAC9C,MAAM,CAAC,WAAW,qBAAe;IAoBjC;;;;;;;;OAQG;IACH,YAAY,gBAAgB,EANjB,MAMiB,EAAE,GAAG,EALtB,GAKsB,EAAE,eAAe,AAJ/C,CACA,EADQ,WAAW,GAAC,IAIkC,EAmBxD;IAED;;;;;;OAMG;IACG,IAAI,CAAC,GAAG,IAAI,EAJP,UAAU,CAAC,GAAG,CAIP,GAHL,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CA2DxC;IAED;;;OAGG;IACH,OAAO,IAFM,IAAI,CAOhB;IAkBD;;;OAGG;IACH,IAAI,WAAW,IAFF,OAAO,CAInB;IAED;;;OAGG;IACH,IAAI,KAAK,IAFI,gBAAgB,CAK5B;IAED;;;OAGG;IACH,IAAI,GAAG,IAFM,GAAG,CAKf;IAED;;;OAGG;IACH,IAAI,gBAAgB,IAFP,MAAM,CAKlB;IAED;;;;OAIG;IACH,IAAI,gBAAgB,CAAC,KAAK,EAHf,MAGe,EAOzB;IAED;;;OAGG;IACH,IAAI,eAAe,IAFN,WAAW,GAAC,IAAI,CAK5B;IAED;;;OAGG;IACH,IAAI,YAAY,IAFH,MAAM,CAKlB;IAED;;;;;OAKG;IACH,IAAI,YAAY,CAAC,KAAK,EAJX,MAIW,EAUrB;IAED;;;OAGG;IACH,IAAI,YAAY,IAFH,MAAM,GAAC,IAAI,CAKvB;IAED;;;OAGG;IACH,IAAI,YAAY,IAFH,OAAO,CAInB;IAED;;;;OAIG;IACH,IAAI,YAAY,CAAC,KAAK,EAHX,OAGW,EAKrB;IAED;;;;;OAKG;IACH,IAAI,YAAY,CAAC,KAAK,EAJX,MAIW,EAUrB;IAED;;;;OAIG;IACH,IAAI,WAAW,IAFF,MAAM,CAKlB;IAED;;;;OAIG;IACH,IAAI,WAAW,IAFF,MAAM,CAKlB;CACF;eAEc,gBAAgB"}