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,274 @@
1
+ export type ForEachCallback<T> = (data: T, key: string, cache: TinyMapCache<T>) => void;
2
+ export type SetEventPayload<T> = {
3
+ /**
4
+ * - The key that was set.
5
+ */
6
+ key: string;
7
+ /**
8
+ * - The data that was set.
9
+ */
10
+ data: T;
11
+ };
12
+ export type GetEventPayload<T> = {
13
+ /**
14
+ * - The key that was accessed.
15
+ */
16
+ key: string;
17
+ /**
18
+ * - True if the key was found and is valid, false otherwise.
19
+ */
20
+ hit: boolean;
21
+ };
22
+ export type DeleteEventPayload<T> = {
23
+ /**
24
+ * - The key that was removed.
25
+ */
26
+ key: string;
27
+ };
28
+ export type ExpireEventPayload<T> = {
29
+ /**
30
+ * - The key that expired.
31
+ */
32
+ key: string;
33
+ /**
34
+ * - The data that was removed due to expiration.
35
+ */
36
+ data: T;
37
+ };
38
+ export type PurgeEventPayload = {
39
+ /**
40
+ * - The number of items removed during purge.
41
+ */
42
+ count: number;
43
+ };
44
+ export type CacheEntry<T> = {
45
+ /**
46
+ * - The actual data being stored.
47
+ */
48
+ data: T;
49
+ /**
50
+ * - The Unix timestamp (ms) when the data was stored.
51
+ */
52
+ timestamp: number;
53
+ };
54
+ export type CacheMap<T> = Map<string, CacheEntry<T>>;
55
+ export type CacheObject<T> = Object<string, CacheEntry<T>>;
56
+ export type TinyMapCacheEvents<T> = {
57
+ /**
58
+ * - Emitted when an item is stored.
59
+ */
60
+ set: (payload: SetEventPayload<T>) => void;
61
+ /**
62
+ * - Emitted when an item is removed.
63
+ */
64
+ delete: (payload: DeleteEventPayload<T>) => void;
65
+ /**
66
+ * - Emitted when an item expires.
67
+ */
68
+ expire: (payload: ExpireEventPayload<T>) => void;
69
+ /**
70
+ * - Emitted after a purge cycle removes items.
71
+ */
72
+ purge: (payload: PurgeEventPayload) => void;
73
+ /**
74
+ * - Emitted when the cache is cleared.
75
+ */
76
+ clear: () => void;
77
+ };
78
+ export type TinyMapCacheEmitter<T> = import('../../jsdoc/EventEmitter.mjs').ICustomEventEmitter<TinyMapCacheEvents<T>>;
79
+ /**
80
+ * @template T
81
+ * @callback ForEachCallback
82
+ * @param {T} data - The value of the current entry.
83
+ * @param {string} key - The key of the current entry.
84
+ * @param {TinyMapCache<T>} cache - The cache instance that is being iterated.
85
+ * @returns {void}
86
+ */
87
+ /**
88
+ * @template T
89
+ * @typedef {Object} SetEventPayload
90
+ * @property {string} key - The key that was set.
91
+ * @property {T} data - The data that was set.
92
+ */
93
+ /**
94
+ * @template T
95
+ * @typedef {Object} GetEventPayload
96
+ * @property {string} key - The key that was accessed.
97
+ * @property {boolean} hit - True if the key was found and is valid, false otherwise.
98
+ */
99
+ /**
100
+ * @template T
101
+ * @typedef {Object} DeleteEventPayload
102
+ * @property {string} key - The key that was removed.
103
+ */
104
+ /**
105
+ * @template T
106
+ * @typedef {Object} ExpireEventPayload
107
+ * @property {string} key - The key that expired.
108
+ * @property {T} data - The data that was removed due to expiration.
109
+ */
110
+ /**
111
+ * @typedef {Object} PurgeEventPayload
112
+ * @property {number} count - The number of items removed during purge.
113
+ */
114
+ /**
115
+ * @template T
116
+ * @typedef {Object} CacheEntry
117
+ * @property {T} data - The actual data being stored.
118
+ * @property {number} timestamp - The Unix timestamp (ms) when the data was stored.
119
+ */
120
+ /**
121
+ * A Map collection where keys are strings and values are CacheEntry objects.
122
+ * @template T
123
+ * @typedef {Map<string, CacheEntry<T>>} CacheMap
124
+ */
125
+ /**
126
+ * A plain object representation of the cache, where keys are strings and values are CacheEntry objects.
127
+ * @template T
128
+ * @typedef {Object.<string, CacheEntry<T>>} CacheObject
129
+ */
130
+ /**
131
+ * Event map for {@link TinyMapCache}.
132
+ * @template T
133
+ * @typedef {Object} TinyMapCacheEvents
134
+ * @property {(payload: SetEventPayload<T>) => void} set - Emitted when an item is stored.
135
+ * @property {(payload: DeleteEventPayload<T>) => void} delete - Emitted when an item is removed.
136
+ * @property {(payload: ExpireEventPayload<T>) => void} expire - Emitted when an item expires.
137
+ * @property {(payload: PurgeEventPayload) => void} purge - Emitted after a purge cycle removes items.
138
+ * @property {() => void} clear - Emitted when the cache is cleared.
139
+ */
140
+ /**
141
+ * @template T
142
+ * @typedef {import('../../jsdoc/EventEmitter.mjs').ICustomEventEmitter<TinyMapCacheEvents<T>>} TinyMapCacheEmitter
143
+ */
144
+ /** @type {new () => TinyMapCacheEmitter<any>} */
145
+ declare const TypedEventEmitter: new () => TinyMapCacheEmitter<any>;
146
+ /**
147
+ * @template {any} T
148
+ * In-memory cache manager to prevent duplicate requests.
149
+ */
150
+ declare class TinyMapCache<T extends any> extends TypedEventEmitter {
151
+ #private;
152
+ /**
153
+ * A collection of all active `TinyMapCache` instances.
154
+ * This collection is used to facilitate cascaded operations (like `purgeExpired`) across all existing cache instances.
155
+ * @type {Array<TinyMapCache<any>>}
156
+ */
157
+ static get activeInstances(): Array<TinyMapCache<any>>;
158
+ /**
159
+ * Returns the total number of active `TinyMapCache` instances currently being tracked.
160
+ * @returns {number} The count of active instances.
161
+ */
162
+ static get activeInstancesSize(): number;
163
+ constructor();
164
+ /**
165
+ * Gets the current Time-To-Live (TTL) in milliseconds.
166
+ * @returns {number}
167
+ */
168
+ get ttl(): number;
169
+ /**
170
+ * Sets the Time-To-Live (TTL) in milliseconds.
171
+ * @param {number} value - The new TTL value.
172
+ * @throws {TypeError} If the value is not a number.
173
+ * @throws {RangeError} If the value is less than 0.
174
+ */
175
+ set ttl(value: number);
176
+ /**
177
+ * Returns the number of items currently stored in the cache.
178
+ * @returns {number}
179
+ */
180
+ get size(): number;
181
+ /**
182
+ * Checks if a specific key exists in the cache.
183
+ *
184
+ * Note: This method triggers a full purge of all expired items in the cache.
185
+ * @param {string} key - The identifier for the data.
186
+ * @returns {boolean} True if the key exists, false otherwise.
187
+ * @throws {TypeError} If the key is not a string.
188
+ */
189
+ has(key: string): boolean;
190
+ /**
191
+ * Removes the item associated with the specified key from the cache.
192
+ *
193
+ * Note: This method triggers a full purge of all expired items in the cache.
194
+ * @param {string} key - The identifier for the data.
195
+ * @returns {boolean} True if an element in the Map existed and has been removed, false otherwise.
196
+ * @throws {TypeError} If the key is not a string.
197
+ */
198
+ delete(key: string): boolean;
199
+ /**
200
+ * Saves an item to the cache.
201
+ *
202
+ * Note: This method triggers a full purge of all expired items in the cache.
203
+ * @param {string} key - The identifier for the data.
204
+ * @param {T} data - The data to be stored.
205
+ * @throws {TypeError} If the key is not a string.
206
+ */
207
+ set(key: string, data: T): void;
208
+ /**
209
+ * Retrieves an item if it is still valid.
210
+ *
211
+ * Note: This method triggers a full purge of all expired items in the cache.
212
+ * @param {string} key - The identifier for the data.
213
+ * @returns {T | null} The data if valid, or null if expired/not found.
214
+ * @throws {TypeError} If the key is not a string.
215
+ */
216
+ get(key: string): T | null;
217
+ /**
218
+ * Returns the string tag used by `Object.prototype.toString`.
219
+ * @returns {string} The string tag for this class.
220
+ */
221
+ get [Symbol.toStringTag](): string;
222
+ /**
223
+ * Returns a new iterator that yields the keys of all valid (non-expired) entries.
224
+ *
225
+ * Note: This method triggers a full purge of all expired items in the cache.
226
+ * @returns {IterableIterator<string>} An iterator over the cache keys.
227
+ */
228
+ keys(): IterableIterator<string>;
229
+ /**
230
+ * Returns a new iterator that yields the values of all valid (non-expired) entries.
231
+ *
232
+ * Note: This method triggers a full purge of all expired items in the cache.
233
+ * @returns {IterableIterator<T>} An iterator over the cache values.
234
+ */
235
+ values(): IterableIterator<T>;
236
+ /**
237
+ * Returns a new iterator that yields the `[key, value]` pairs of all valid (non-expired) entries.
238
+ *
239
+ * Note: This method triggers a full purge of all expired items in the cache.
240
+ * @returns {IterableIterator<[string, T]>} An iterator over the cache entries.
241
+ */
242
+ entries(): IterableIterator<[string, T]>;
243
+ /**
244
+ * Returns a new iterator over the `[key, value]` pairs of all valid (non-expired) entries.
245
+ * Alias for `entries()`, enabling `for...of` and spread syntax.
246
+ *
247
+ * Note: This method triggers a full purge of all expired items in the cache.
248
+ * @returns {IterableIterator<[string, T]>} An iterator over the cache entries.
249
+ */
250
+ [Symbol.iterator](): IterableIterator<[string, T]>;
251
+ /**
252
+ * Executes a provided function once for each valid (non-expired) entry.
253
+ *
254
+ * Note: This method triggers a full purge of all expired items in the cache.
255
+ * @param {ForEachCallback<T>} callbackFn - The function to execute for each entry.
256
+ * @param {any} [thisArg] - The value to use as `this` when executing `callbackFn`.
257
+ * @returns {void}
258
+ * @throws {TypeError} If the callback is not a function.
259
+ */
260
+ forEach(callbackFn: ForEachCallback<T>, thisArg?: any): void;
261
+ /**
262
+ * Iterates through the current cache and removes all entries that have exceeded the TTL.
263
+ * @param {boolean} [clearAll=true] - If true, triggers a purge on all other active cache instances.
264
+ * @returns {void}
265
+ */
266
+ purgeExpired(clearAll?: boolean): void;
267
+ /**
268
+ * Removes all items from the cache.
269
+ * @returns {void}
270
+ */
271
+ clear(): void;
272
+ }
273
+ export default TinyMapCache;
274
+ //# sourceMappingURL=TinyMapCache.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TinyMapCache.d.mts","sourceRoot":"","sources":["../../../../src/v1/libs/storage/TinyMapCache.mjs"],"names":[],"mappings":"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"}
@@ -0,0 +1,333 @@
1
+ import { EventEmitter } from 'events';
2
+ /**
3
+ * @template T
4
+ * @callback ForEachCallback
5
+ * @param {T} data - The value of the current entry.
6
+ * @param {string} key - The key of the current entry.
7
+ * @param {TinyMapCache<T>} cache - The cache instance that is being iterated.
8
+ * @returns {void}
9
+ */
10
+ /**
11
+ * @template T
12
+ * @typedef {Object} SetEventPayload
13
+ * @property {string} key - The key that was set.
14
+ * @property {T} data - The data that was set.
15
+ */
16
+ /**
17
+ * @template T
18
+ * @typedef {Object} GetEventPayload
19
+ * @property {string} key - The key that was accessed.
20
+ * @property {boolean} hit - True if the key was found and is valid, false otherwise.
21
+ */
22
+ /**
23
+ * @template T
24
+ * @typedef {Object} DeleteEventPayload
25
+ * @property {string} key - The key that was removed.
26
+ */
27
+ /**
28
+ * @template T
29
+ * @typedef {Object} ExpireEventPayload
30
+ * @property {string} key - The key that expired.
31
+ * @property {T} data - The data that was removed due to expiration.
32
+ */
33
+ /**
34
+ * @typedef {Object} PurgeEventPayload
35
+ * @property {number} count - The number of items removed during purge.
36
+ */
37
+ /**
38
+ * @template T
39
+ * @typedef {Object} CacheEntry
40
+ * @property {T} data - The actual data being stored.
41
+ * @property {number} timestamp - The Unix timestamp (ms) when the data was stored.
42
+ */
43
+ /**
44
+ * A Map collection where keys are strings and values are CacheEntry objects.
45
+ * @template T
46
+ * @typedef {Map<string, CacheEntry<T>>} CacheMap
47
+ */
48
+ /**
49
+ * A plain object representation of the cache, where keys are strings and values are CacheEntry objects.
50
+ * @template T
51
+ * @typedef {Object.<string, CacheEntry<T>>} CacheObject
52
+ */
53
+ /**
54
+ * Event map for {@link TinyMapCache}.
55
+ * @template T
56
+ * @typedef {Object} TinyMapCacheEvents
57
+ * @property {(payload: SetEventPayload<T>) => void} set - Emitted when an item is stored.
58
+ * @property {(payload: DeleteEventPayload<T>) => void} delete - Emitted when an item is removed.
59
+ * @property {(payload: ExpireEventPayload<T>) => void} expire - Emitted when an item expires.
60
+ * @property {(payload: PurgeEventPayload) => void} purge - Emitted after a purge cycle removes items.
61
+ * @property {() => void} clear - Emitted when the cache is cleared.
62
+ */
63
+ /**
64
+ * @template T
65
+ * @typedef {import('../../jsdoc/EventEmitter.mjs').ICustomEventEmitter<TinyMapCacheEvents<T>>} TinyMapCacheEmitter
66
+ */
67
+ /** @type {new () => TinyMapCacheEmitter<any>} */
68
+ const TypedEventEmitter = /** @type {any} */ (EventEmitter);
69
+ /**
70
+ * @template {any} T
71
+ * In-memory cache manager to prevent duplicate requests.
72
+ */
73
+ class TinyMapCache extends TypedEventEmitter {
74
+ /**
75
+ * A private collection of all active `TinyMapCache` instances.
76
+ * This set is used to facilitate cascaded operations (like `purgeExpired`) across all existing cache instances.
77
+ * @type {Set<TinyMapCache<any>>}
78
+ */
79
+ static #instances = new Set();
80
+ /**
81
+ * A collection of all active `TinyMapCache` instances.
82
+ * This collection is used to facilitate cascaded operations (like `purgeExpired`) across all existing cache instances.
83
+ * @type {Array<TinyMapCache<any>>}
84
+ */
85
+ static get activeInstances() {
86
+ return Array.from(TinyMapCache.#instances);
87
+ }
88
+ /**
89
+ * Returns the total number of active `TinyMapCache` instances currently being tracked.
90
+ * @returns {number} The count of active instances.
91
+ */
92
+ static get activeInstancesSize() {
93
+ return TinyMapCache.#instances.size;
94
+ }
95
+ constructor() {
96
+ super();
97
+ }
98
+ /** @type {CacheMap<T>} */
99
+ #cache = new Map();
100
+ /**
101
+ * Time-to-live: 5 minutes in milliseconds
102
+ * @type {number}
103
+ */
104
+ #ttl = 300000;
105
+ /**
106
+ * Gets the current Time-To-Live (TTL) in milliseconds.
107
+ * @returns {number}
108
+ */
109
+ get ttl() {
110
+ return this.#ttl;
111
+ }
112
+ /**
113
+ * Sets the Time-To-Live (TTL) in milliseconds.
114
+ * @param {number} value - The new TTL value.
115
+ * @throws {TypeError} If the value is not a number.
116
+ * @throws {RangeError} If the value is less than 0.
117
+ */
118
+ set ttl(value) {
119
+ if (typeof value !== 'number') {
120
+ throw new TypeError('The TTL value must be a number.');
121
+ }
122
+ if (value < 0) {
123
+ throw new RangeError('The TTL value cannot be negative.');
124
+ }
125
+ this.#ttl = value;
126
+ }
127
+ /**
128
+ * Returns the number of items currently stored in the cache.
129
+ * @returns {number}
130
+ */
131
+ get size() {
132
+ return this.#cache.size;
133
+ }
134
+ /**
135
+ * Checks if a specific key exists in the cache.
136
+ *
137
+ * Note: This method triggers a full purge of all expired items in the cache.
138
+ * @param {string} key - The identifier for the data.
139
+ * @returns {boolean} True if the key exists, false otherwise.
140
+ * @throws {TypeError} If the key is not a string.
141
+ */
142
+ has(key) {
143
+ if (typeof key !== 'string') {
144
+ throw new TypeError('The cache key must be a string.');
145
+ }
146
+ this.purgeExpired(true);
147
+ return this.#cache.has(key);
148
+ }
149
+ /**
150
+ * Removes the item associated with the specified key from the cache.
151
+ *
152
+ * Note: This method triggers a full purge of all expired items in the cache.
153
+ * @param {string} key - The identifier for the data.
154
+ * @returns {boolean} True if an element in the Map existed and has been removed, false otherwise.
155
+ * @throws {TypeError} If the key is not a string.
156
+ */
157
+ delete(key) {
158
+ if (typeof key !== 'string') {
159
+ throw new TypeError('The cache key must be a string.');
160
+ }
161
+ this.purgeExpired(true);
162
+ const deleted = this.#cache.delete(key);
163
+ if (deleted) {
164
+ /** @type {DeleteEventPayload<T>} */
165
+ const payload = { key };
166
+ this.emit('delete', payload);
167
+ }
168
+ return deleted;
169
+ }
170
+ /**
171
+ * Saves an item to the cache.
172
+ *
173
+ * Note: This method triggers a full purge of all expired items in the cache.
174
+ * @param {string} key - The identifier for the data.
175
+ * @param {T} data - The data to be stored.
176
+ * @throws {TypeError} If the key is not a string.
177
+ */
178
+ set(key, data) {
179
+ if (typeof key !== 'string') {
180
+ throw new TypeError('The cache key must be a string.');
181
+ }
182
+ this.purgeExpired(true);
183
+ if (!TinyMapCache.#instances.has(this))
184
+ TinyMapCache.#instances.add(this);
185
+ this.#cache.set(key, {
186
+ data,
187
+ timestamp: Date.now(),
188
+ });
189
+ /** @type {SetEventPayload<T>} */
190
+ const payload = { key, data };
191
+ this.emit('set', payload);
192
+ }
193
+ /**
194
+ * Retrieves an item if it is still valid.
195
+ *
196
+ * Note: This method triggers a full purge of all expired items in the cache.
197
+ * @param {string} key - The identifier for the data.
198
+ * @returns {T | null} The data if valid, or null if expired/not found.
199
+ * @throws {TypeError} If the key is not a string.
200
+ */
201
+ get(key) {
202
+ if (typeof key !== 'string') {
203
+ throw new TypeError('The cache key must be a string.');
204
+ }
205
+ this.purgeExpired(true);
206
+ const cached = this.#cache.get(key);
207
+ if (!cached)
208
+ return null;
209
+ return cached.data;
210
+ }
211
+ /**
212
+ * Returns the string tag used by `Object.prototype.toString`.
213
+ * @returns {string} The string tag for this class.
214
+ */
215
+ get [Symbol.toStringTag]() {
216
+ return 'TinyMapCache';
217
+ }
218
+ /**
219
+ * Returns a new iterator that yields the keys of all valid (non-expired) entries.
220
+ *
221
+ * Note: This method triggers a full purge of all expired items in the cache.
222
+ * @returns {IterableIterator<string>} An iterator over the cache keys.
223
+ */
224
+ keys() {
225
+ this.purgeExpired(true);
226
+ return this.#validEntries()
227
+ .map(([key]) => key)
228
+ .values();
229
+ }
230
+ /**
231
+ * Returns a new iterator that yields the values of all valid (non-expired) entries.
232
+ *
233
+ * Note: This method triggers a full purge of all expired items in the cache.
234
+ * @returns {IterableIterator<T>} An iterator over the cache values.
235
+ */
236
+ values() {
237
+ this.purgeExpired(true);
238
+ return this.#validEntries()
239
+ .map(([, data]) => data)
240
+ .values();
241
+ }
242
+ /**
243
+ * Returns a new iterator that yields the `[key, value]` pairs of all valid (non-expired) entries.
244
+ *
245
+ * Note: This method triggers a full purge of all expired items in the cache.
246
+ * @returns {IterableIterator<[string, T]>} An iterator over the cache entries.
247
+ */
248
+ entries() {
249
+ this.purgeExpired(true);
250
+ return this.#validEntries().values();
251
+ }
252
+ /**
253
+ * Returns a new iterator over the `[key, value]` pairs of all valid (non-expired) entries.
254
+ * Alias for `entries()`, enabling `for...of` and spread syntax.
255
+ *
256
+ * Note: This method triggers a full purge of all expired items in the cache.
257
+ * @returns {IterableIterator<[string, T]>} An iterator over the cache entries.
258
+ */
259
+ [Symbol.iterator]() {
260
+ return this.entries();
261
+ }
262
+ /**
263
+ * Executes a provided function once for each valid (non-expired) entry.
264
+ *
265
+ * Note: This method triggers a full purge of all expired items in the cache.
266
+ * @param {ForEachCallback<T>} callbackFn - The function to execute for each entry.
267
+ * @param {any} [thisArg] - The value to use as `this` when executing `callbackFn`.
268
+ * @returns {void}
269
+ * @throws {TypeError} If the callback is not a function.
270
+ */
271
+ forEach(callbackFn, thisArg) {
272
+ if (typeof callbackFn !== 'function') {
273
+ throw new TypeError('The callback must be a function.');
274
+ }
275
+ this.purgeExpired(true);
276
+ for (const [key, data] of this.#validEntries()) {
277
+ callbackFn.call(thisArg, data, key, this);
278
+ }
279
+ }
280
+ /**
281
+ * Builds a snapshot of all valid (non-expired) entries as `[key, value]` pairs.
282
+ * Expired entries are expected to be removed beforehand via `purgeExpired`.
283
+ * @returns {Array<[string, T]>} The list of valid entries.
284
+ */
285
+ #validEntries() {
286
+ /** @type {Array<[string, T]>} */
287
+ const entries = [];
288
+ for (const [key, entry] of this.#cache.entries()) {
289
+ entries.push([key, entry.data]);
290
+ }
291
+ return entries;
292
+ }
293
+ /**
294
+ * Iterates through the current cache and removes all entries that have exceeded the TTL.
295
+ * @param {boolean} [clearAll=true] - If true, triggers a purge on all other active cache instances.
296
+ * @returns {void}
297
+ */
298
+ purgeExpired(clearAll = false) {
299
+ const now = Date.now();
300
+ let purgedCount = 0;
301
+ for (const [key, entry] of this.#cache.entries()) {
302
+ if (now - entry.timestamp > this.#ttl) {
303
+ this.#cache.delete(key);
304
+ purgedCount++;
305
+ /** @type {ExpireEventPayload<T>} */
306
+ const expirePayload = { key, data: entry.data };
307
+ this.emit('expire', expirePayload);
308
+ }
309
+ }
310
+ if (purgedCount > 0) {
311
+ /** @type {PurgeEventPayload} */
312
+ const purgePayload = { count: purgedCount };
313
+ this.emit('purge', purgePayload);
314
+ }
315
+ if (this.#cache.size < 1)
316
+ TinyMapCache.#instances.delete(this);
317
+ if (clearAll)
318
+ TinyMapCache.#instances.forEach((i) => {
319
+ if (i !== this)
320
+ i.purgeExpired(false);
321
+ });
322
+ }
323
+ /**
324
+ * Removes all items from the cache.
325
+ * @returns {void}
326
+ */
327
+ clear() {
328
+ TinyMapCache.#instances.delete(this);
329
+ this.#cache.clear();
330
+ this.emit('clear');
331
+ }
332
+ }
333
+ export default TinyMapCache;