tiny-essentials 1.28.18 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/README.md +1 -1
  2. package/changelog/1/28/19.md +24 -0
  3. package/changelog/1/29/0.md +58 -0
  4. package/dist/v1/ColorSafeStringify.min.js +1 -1
  5. package/dist/v1/TinyAdvancedRaffle.min.js +1 -1
  6. package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
  7. package/dist/v1/TinyAnalogClock.min.js +1 -1
  8. package/dist/v1/TinyArrayComparator.min.js +1 -1
  9. package/dist/v1/TinyArrayPaginator.min.js +1 -1
  10. package/dist/v1/TinyBasicsEs.min.js +1 -1
  11. package/dist/v1/TinyBrowserMonitor.min.js +1 -0
  12. package/dist/v1/TinyClassManager.min.js +1 -1
  13. package/dist/v1/TinyClipboard.min.js +1 -1
  14. package/dist/v1/TinyCloner.min.js +1 -0
  15. package/dist/v1/TinyColorConverter.min.js +1 -1
  16. package/dist/v1/TinyColorValidator.min.js +1 -1
  17. package/dist/v1/TinyCookieConsent.min.js +1 -1
  18. package/dist/v1/TinyDayNightCycle.min.js +1 -1
  19. package/dist/v1/TinyDebugger.min.js +1 -1
  20. package/dist/v1/TinyDomReadyManager.min.js +1 -1
  21. package/dist/v1/TinyDragDropDetector.min.js +1 -1
  22. package/dist/v1/TinyDragger.min.js +1 -1
  23. package/dist/v1/TinyElementObserver.min.js +1 -1
  24. package/dist/v1/TinyEssentials.min.js +1 -1
  25. package/dist/v1/TinyGamepad.min.js +1 -1
  26. package/dist/v1/TinyHtml.min.js +1 -1
  27. package/dist/v1/TinyHtmlTagRegexBuilder.min.js +1 -0
  28. package/dist/v1/TinyHttpResponseRegistry.min.js +1 -0
  29. package/dist/v1/TinyI18.min.js +1 -1
  30. package/dist/v1/TinyIframeEvents.min.js +1 -1
  31. package/dist/v1/TinyInventory.min.js +1 -1
  32. package/dist/v1/TinyInventoryTrader.min.js +1 -1
  33. package/dist/v1/TinyLevelUp.min.js +1 -1
  34. package/dist/v1/TinyLoadingScreen.min.js +1 -1
  35. package/dist/v1/TinyLocalStorage.min.js +1 -1
  36. package/dist/v1/TinyMaInSys.min.js +1 -1
  37. package/dist/v1/TinyMapCache.min.js +1 -0
  38. package/dist/v1/TinyMediaPlayer.min.js +1 -1
  39. package/dist/v1/TinyNeedBar.min.js +1 -1
  40. package/dist/v1/TinyNewWinEvents.min.js +1 -1
  41. package/dist/v1/TinyNotificationAdapter.min.js +1 -0
  42. package/dist/v1/TinyNotifications.min.js +1 -1
  43. package/dist/v1/TinyNotifyCenter.min.js +1 -1
  44. package/dist/v1/TinyOPFSFileSystem.min.js +1 -0
  45. package/dist/v1/TinyPasswordValidator.min.js +1 -0
  46. package/dist/v1/TinyPluginPackage.min.js +1 -0
  47. package/dist/v1/TinyPromiseQueue.min.js +1 -1
  48. package/dist/v1/TinyPushManager.min.js +1 -0
  49. package/dist/v1/TinyPushPayload.min.js +1 -0
  50. package/dist/v1/TinyPushRouter.min.js +1 -0
  51. package/dist/v1/TinyRadioFm.min.js +1 -1
  52. package/dist/v1/TinyRateLimiter.min.js +1 -1
  53. package/dist/v1/TinyRegexEs.min.js +1 -0
  54. package/dist/v1/TinyRouter.min.js +1 -0
  55. package/dist/v1/TinyServiceWorker.min.js +1 -0
  56. package/dist/v1/TinyServiceWorkerEngine.min.js +1 -0
  57. package/dist/v1/TinySetMapPackage.min.js +1 -0
  58. package/dist/v1/TinySimpleDice.min.js +1 -1
  59. package/dist/v1/TinySmartScroller.min.js +1 -1
  60. package/dist/v1/TinyStorageBucketFileSystem.min.js +1 -0
  61. package/dist/v1/TinyTextDiffer.min.js +1 -1
  62. package/dist/v1/TinyTextRangeEditor.min.js +1 -1
  63. package/dist/v1/TinyTextarea.min.js +1 -1
  64. package/dist/v1/TinyThrottledApi.min.js +1 -0
  65. package/dist/v1/TinyTimeout.min.js +1 -1
  66. package/dist/v1/TinyToastNotify.min.js +1 -1
  67. package/dist/v1/TinyUploadClicker.min.js +1 -1
  68. package/dist/v1/TinyUriParser.min.js +1 -0
  69. package/dist/v1/TinyVersion.min.js +1 -0
  70. package/dist/v1/TinyWebWorker.min.js +1 -0
  71. package/dist/v1/TinyWebWorkerEngine.min.js +1 -0
  72. package/dist/v1/UltraRandomMsgGen.min.js +1 -1
  73. package/dist/v1/basics/array.cjs +2 -2
  74. package/dist/v1/basics/array.d.mts +2 -0
  75. package/dist/v1/basics/array.d.mts.map +1 -1
  76. package/dist/v1/basics/array.mjs +2 -1
  77. package/dist/v1/basics/browserDetector.cjs +37 -12
  78. package/dist/v1/basics/browserDetector.d.mts +8 -0
  79. package/dist/v1/basics/browserDetector.d.mts.map +1 -1
  80. package/dist/v1/basics/browserDetector.mjs +32 -13
  81. package/dist/v1/basics/crypto.cjs +23 -0
  82. package/dist/v1/basics/crypto.d.mts +10 -0
  83. package/dist/v1/basics/crypto.d.mts.map +1 -0
  84. package/dist/v1/basics/crypto.mjs +18 -0
  85. package/dist/v1/basics/html.cjs +0 -3
  86. package/dist/v1/basics/html.d.mts.map +1 -1
  87. package/dist/v1/basics/html.mjs +0 -2
  88. package/dist/v1/basics/index.cjs +8 -1
  89. package/dist/v1/basics/index.d.mts +6 -5
  90. package/dist/v1/basics/index.d.mts.map +1 -1
  91. package/dist/v1/basics/index.mjs +6 -5
  92. package/dist/v1/basics/objChecker.cjs +88 -0
  93. package/dist/v1/basics/objChecker.d.mts +26 -0
  94. package/dist/v1/basics/objChecker.d.mts.map +1 -1
  95. package/dist/v1/basics/objChecker.mjs +74 -0
  96. package/dist/v1/basics/objFilter.cjs +234 -93
  97. package/dist/v1/basics/objFilter.d.mts +96 -22
  98. package/dist/v1/basics/objFilter.d.mts.map +1 -1
  99. package/dist/v1/basics/objFilter.mjs +216 -92
  100. package/dist/v1/basics/promiseUtils.cjs +48 -12
  101. package/dist/v1/basics/promiseUtils.d.mts +45 -12
  102. package/dist/v1/basics/promiseUtils.d.mts.map +1 -1
  103. package/dist/v1/basics/promiseUtils.mjs +47 -12
  104. package/dist/v1/basics/text.cjs +0 -12
  105. package/dist/v1/basics/text.d.mts +0 -10
  106. package/dist/v1/basics/text.d.mts.map +1 -1
  107. package/dist/v1/basics/text.mjs +0 -10
  108. package/dist/v1/css/TinyCookieConsent.min.css +1 -0
  109. package/dist/v1/css/TinyCookieConsent.min.css.map +1 -0
  110. package/dist/v1/css/TinyDraggerExample.min.css +1 -0
  111. package/dist/v1/css/TinyDraggerExample.min.css.map +1 -0
  112. package/dist/v1/css/TinyLoadingScreen.min.css +1 -0
  113. package/dist/v1/css/TinyLoadingScreen.min.css.map +1 -0
  114. package/dist/v1/css/TinyNotify.min.css +1 -0
  115. package/dist/v1/css/TinyNotify.min.css.map +1 -0
  116. package/dist/v1/css/aiMarker.min.css +1 -0
  117. package/dist/v1/css/aiMarker.min.css.map +1 -0
  118. package/dist/v1/index.cjs +88 -3
  119. package/dist/v1/index.d.mts +31 -6
  120. package/dist/v1/index.d.mts.map +1 -1
  121. package/dist/v1/index.mjs +32 -7
  122. package/dist/v1/jsdoc/EventEmitter.cjs +4 -0
  123. package/dist/v1/jsdoc/EventEmitter.d.mts +33 -0
  124. package/dist/v1/jsdoc/EventEmitter.d.mts.map +1 -0
  125. package/dist/v1/jsdoc/EventEmitter.mjs +18 -0
  126. package/dist/v1/libs/array/TinyArrayComparator.cjs +240 -25
  127. package/dist/v1/libs/array/TinyArrayComparator.d.mts +130 -22
  128. package/dist/v1/libs/array/TinyArrayComparator.d.mts.map +1 -1
  129. package/dist/v1/libs/array/TinyArrayComparator.mjs +210 -24
  130. package/dist/v1/libs/fs/constants.cjs +74 -0
  131. package/dist/v1/libs/fs/constants.d.mts +22 -0
  132. package/dist/v1/libs/fs/constants.d.mts.map +1 -0
  133. package/dist/v1/libs/fs/constants.mjs +53 -0
  134. package/dist/v1/libs/fs/encoding.cjs +118 -0
  135. package/dist/v1/libs/fs/encoding.d.mts +50 -0
  136. package/dist/v1/libs/fs/encoding.d.mts.map +1 -0
  137. package/dist/v1/libs/fs/encoding.mjs +102 -0
  138. package/dist/v1/libs/fs/error.cjs +188 -0
  139. package/dist/v1/libs/fs/error.d.mts +105 -0
  140. package/dist/v1/libs/fs/error.d.mts.map +1 -0
  141. package/dist/v1/libs/fs/error.mjs +158 -0
  142. package/dist/v1/libs/fs/handle.cjs +121 -0
  143. package/dist/v1/libs/fs/handle.d.mts +56 -0
  144. package/dist/v1/libs/fs/handle.d.mts.map +1 -0
  145. package/dist/v1/libs/fs/handle.mjs +100 -0
  146. package/dist/v1/libs/fs/index.cjs +700 -0
  147. package/dist/v1/libs/fs/index.d.mts +377 -0
  148. package/dist/v1/libs/fs/index.d.mts.map +1 -0
  149. package/dist/v1/libs/fs/index.mjs +630 -0
  150. package/dist/v1/libs/fs/path.cjs +234 -0
  151. package/dist/v1/libs/fs/path.d.mts +176 -0
  152. package/dist/v1/libs/fs/path.d.mts.map +1 -0
  153. package/dist/v1/libs/fs/path.mjs +197 -0
  154. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.cjs +202 -0
  155. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts +121 -0
  156. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts.map +1 -0
  157. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.mjs +172 -0
  158. package/dist/v1/libs/fs/plugins/OPFS/index.cjs +334 -0
  159. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts +98 -0
  160. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts.map +1 -0
  161. package/dist/v1/libs/fs/plugins/OPFS/index.mjs +300 -0
  162. package/dist/v1/libs/fs/stats.cjs +245 -0
  163. package/dist/v1/libs/fs/stats.d.mts +226 -0
  164. package/dist/v1/libs/fs/stats.d.mts.map +1 -0
  165. package/dist/v1/libs/fs/stats.mjs +197 -0
  166. package/dist/v1/libs/html/events/TinyIframeEvents.cjs +10 -1
  167. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts +9 -2
  168. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts.map +1 -1
  169. package/dist/v1/libs/html/events/TinyIframeEvents.mjs +8 -1
  170. package/dist/v1/libs/html/events/TinyNewWinEvents.cjs +14 -3
  171. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts +21 -5
  172. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts.map +1 -1
  173. package/dist/v1/libs/html/events/TinyNewWinEvents.mjs +12 -3
  174. package/dist/v1/libs/html/scroll/TinySmartScroller.cjs +13 -1
  175. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts +29 -2
  176. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts.map +1 -1
  177. package/dist/v1/libs/html/scroll/TinySmartScroller.mjs +11 -1
  178. package/dist/v1/libs/math/TinyAdvancedRaffle.cjs +13 -1
  179. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts +32 -2
  180. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts.map +1 -1
  181. package/dist/v1/libs/math/TinyAdvancedRaffle.mjs +11 -1
  182. package/dist/v1/libs/math/TinyTimeout.cjs +0 -14
  183. package/dist/v1/libs/math/TinyTimeout.d.mts +0 -11
  184. package/dist/v1/libs/math/TinyTimeout.d.mts.map +1 -1
  185. package/dist/v1/libs/math/TinyTimeout.mjs +0 -13
  186. package/dist/v1/libs/media/TinyMediaPlayer/index.cjs +25 -1
  187. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts +35 -2
  188. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts.map +1 -1
  189. package/dist/v1/libs/media/TinyMediaPlayer/index.mjs +23 -1
  190. package/dist/v1/libs/media/TinyMediaPlayer.cjs +2 -2
  191. package/dist/v1/libs/media/TinyMediaPlayer.d.mts +2 -2
  192. package/dist/v1/libs/media/TinyMediaPlayer.d.mts.map +1 -1
  193. package/dist/v1/libs/media/TinyMediaPlayer.mjs +2 -2
  194. package/dist/v1/libs/media/TinyRadioFm.cjs +19 -1
  195. package/dist/v1/libs/media/TinyRadioFm.d.mts +78 -2
  196. package/dist/v1/libs/media/TinyRadioFm.d.mts.map +1 -1
  197. package/dist/v1/libs/media/TinyRadioFm.mjs +17 -1
  198. package/dist/v1/libs/plugin/TinyPlugin.cjs +1630 -0
  199. package/dist/v1/libs/plugin/TinyPlugin.d.mts +753 -0
  200. package/dist/v1/libs/plugin/TinyPlugin.d.mts.map +1 -0
  201. package/dist/v1/libs/plugin/TinyPlugin.mjs +1376 -0
  202. package/dist/v1/libs/plugin/TinyVersion.cjs +204 -0
  203. package/dist/v1/libs/plugin/TinyVersion.d.mts +70 -0
  204. package/dist/v1/libs/plugin/TinyVersion.d.mts.map +1 -0
  205. package/dist/v1/libs/plugin/TinyVersion.mjs +179 -0
  206. package/dist/v1/libs/router/TinyRouter.cjs +661 -0
  207. package/dist/v1/libs/router/TinyRouter.d.mts +320 -0
  208. package/dist/v1/libs/router/TinyRouter.d.mts.map +1 -0
  209. package/dist/v1/libs/router/TinyRouter.mjs +572 -0
  210. package/dist/v1/libs/storage/TinyLocalStorage.cjs +20 -1
  211. package/dist/v1/libs/storage/TinyLocalStorage.d.mts +64 -2
  212. package/dist/v1/libs/storage/TinyLocalStorage.d.mts.map +1 -1
  213. package/dist/v1/libs/storage/TinyLocalStorage.mjs +18 -1
  214. package/dist/v1/libs/storage/TinyMapCache.cjs +373 -0
  215. package/dist/v1/libs/storage/TinyMapCache.d.mts +274 -0
  216. package/dist/v1/libs/storage/TinyMapCache.d.mts.map +1 -0
  217. package/dist/v1/libs/storage/TinyMapCache.mjs +333 -0
  218. package/dist/v1/libs/storage/TinySetMapDatabase.cjs +1167 -0
  219. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts +603 -0
  220. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts.map +1 -0
  221. package/dist/v1/libs/storage/TinySetMapDatabase.mjs +1059 -0
  222. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.cjs +126 -0
  223. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts +132 -0
  224. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts.map +1 -0
  225. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.mjs +109 -0
  226. package/dist/v1/libs/sw/browser/TinyPushManager.cjs +310 -0
  227. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts +168 -0
  228. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts.map +1 -0
  229. package/dist/v1/libs/sw/browser/TinyPushManager.mjs +264 -0
  230. package/dist/v1/libs/sw/browser/TinyServiceWorker.cjs +1060 -0
  231. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts +348 -0
  232. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts.map +1 -0
  233. package/dist/v1/libs/sw/browser/TinyServiceWorker.mjs +933 -0
  234. package/dist/v1/libs/sw/browser/plugins/TabManager.cjs +315 -0
  235. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts +178 -0
  236. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts.map +1 -0
  237. package/dist/v1/libs/sw/browser/plugins/TabManager.mjs +274 -0
  238. package/dist/v1/libs/sw/browser/utils.cjs +28 -0
  239. package/dist/v1/libs/sw/browser/utils.d.mts +8 -0
  240. package/dist/v1/libs/sw/browser/utils.d.mts.map +1 -0
  241. package/dist/v1/libs/sw/browser/utils.mjs +21 -0
  242. package/dist/v1/libs/sw/service/TinyPushRouter.cjs +222 -0
  243. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts +138 -0
  244. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts.map +1 -0
  245. package/dist/v1/libs/sw/service/TinyPushRouter.mjs +201 -0
  246. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.cjs +3016 -0
  247. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts +993 -0
  248. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts.map +1 -0
  249. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.mjs +2558 -0
  250. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.cjs +88 -0
  251. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts +32 -0
  252. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts.map +1 -0
  253. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.mjs +69 -0
  254. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.cjs +112 -0
  255. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts +31 -0
  256. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts.map +1 -0
  257. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.mjs +91 -0
  258. package/dist/v1/libs/sw/service/plugins/Ping.cjs +32 -0
  259. package/dist/v1/libs/sw/service/plugins/Ping.d.mts +9 -0
  260. package/dist/v1/libs/sw/service/plugins/Ping.d.mts.map +1 -0
  261. package/dist/v1/libs/sw/service/plugins/Ping.mjs +25 -0
  262. package/dist/v1/libs/sw/service/plugins/TabManager.cjs +457 -0
  263. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts +91 -0
  264. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts.map +1 -0
  265. package/dist/v1/libs/sw/service/plugins/TabManager.mjs +372 -0
  266. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.cjs +180 -0
  267. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts +28 -0
  268. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts.map +1 -0
  269. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.mjs +148 -0
  270. package/dist/v1/libs/sw/service/shared/TinyPushPayload.cjs +199 -0
  271. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts +80 -0
  272. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts.map +1 -0
  273. package/dist/v1/libs/sw/service/shared/TinyPushPayload.mjs +174 -0
  274. package/dist/v1/libs/sw/utils.cjs +57 -0
  275. package/dist/v1/libs/sw/utils.d.mts +173 -0
  276. package/dist/v1/libs/sw/utils.d.mts.map +1 -0
  277. package/dist/v1/libs/sw/utils.mjs +50 -0
  278. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.cjs +57 -0
  279. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts +39 -0
  280. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts.map +1 -0
  281. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.mjs +48 -0
  282. package/dist/v1/libs/text/TinyI18/Browser.cjs +64 -0
  283. package/dist/v1/libs/text/TinyI18/Browser.d.mts +47 -0
  284. package/dist/v1/libs/text/TinyI18/Browser.d.mts.map +1 -0
  285. package/dist/v1/libs/text/TinyI18/Browser.mjs +57 -0
  286. package/dist/v1/libs/text/TinyI18/Node.cjs +49 -0
  287. package/dist/v1/libs/text/TinyI18/Node.d.mts +38 -0
  288. package/dist/v1/libs/text/TinyI18/Node.d.mts.map +1 -0
  289. package/dist/v1/libs/text/TinyI18/Node.mjs +43 -0
  290. package/dist/v1/libs/text/TinyI18/browser-utils.cjs +17 -0
  291. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts +8 -0
  292. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts.map +1 -0
  293. package/dist/v1/libs/text/TinyI18/browser-utils.mjs +13 -0
  294. package/dist/v1/libs/text/{TinyI18.cjs → TinyI18/index.cjs} +205 -104
  295. package/dist/v1/libs/text/{TinyI18.d.mts → TinyI18/index.d.mts} +141 -92
  296. package/dist/v1/libs/text/TinyI18/index.d.mts.map +1 -0
  297. package/dist/v1/libs/text/{TinyI18.mjs → TinyI18/index.mjs} +195 -101
  298. package/dist/v1/libs/tools/TinyBrowserMonitor.cjs +1088 -0
  299. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts +621 -0
  300. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts.map +1 -0
  301. package/dist/v1/libs/tools/TinyBrowserMonitor.mjs +940 -0
  302. package/dist/v1/libs/tools/TinyDebugger.cjs +180 -19
  303. package/dist/v1/libs/tools/TinyDebugger.d.mts +220 -24
  304. package/dist/v1/libs/tools/TinyDebugger.d.mts.map +1 -1
  305. package/dist/v1/libs/tools/TinyDebugger.mjs +161 -19
  306. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.cjs +256 -0
  307. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts +125 -0
  308. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts.map +1 -0
  309. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.mjs +223 -0
  310. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.cjs +23 -0
  311. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts +17 -0
  312. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts.map +1 -0
  313. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.mjs +19 -0
  314. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.cjs +23 -0
  315. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts +17 -0
  316. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts.map +1 -0
  317. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.mjs +19 -0
  318. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.cjs +390 -0
  319. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts +9 -0
  320. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts.map +1 -0
  321. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.mjs +387 -0
  322. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.cjs +2 -0
  323. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts +27 -0
  324. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts.map +1 -0
  325. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.mjs +12 -0
  326. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/LICENSE +53 -0
  327. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.cjs +405 -0
  328. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts +34 -0
  329. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts.map +1 -0
  330. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.mjs +342 -0
  331. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.cjs +23 -0
  332. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts +17 -0
  333. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts.map +1 -0
  334. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.mjs +19 -0
  335. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.cjs +327 -0
  336. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts +9 -0
  337. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts.map +1 -0
  338. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.mjs +324 -0
  339. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.cjs +268 -0
  340. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts +107 -0
  341. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts.map +1 -0
  342. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.mjs +238 -0
  343. package/dist/v1/libs/tools/TinyPasswordValidator.cjs +491 -0
  344. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts +246 -0
  345. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts.map +1 -0
  346. package/dist/v1/libs/tools/TinyPasswordValidator.mjs +434 -0
  347. package/dist/v1/libs/tools/TinyPkgExportValidator.cjs +48 -0
  348. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts +14 -0
  349. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts.map +1 -1
  350. package/dist/v1/libs/tools/TinyPkgExportValidator.mjs +44 -0
  351. package/dist/v1/libs/tools/TinySiteMap.cjs +1029 -0
  352. package/dist/v1/libs/tools/TinySiteMap.d.mts +429 -0
  353. package/dist/v1/libs/tools/TinySiteMap.d.mts.map +1 -0
  354. package/dist/v1/libs/tools/TinySiteMap.mjs +910 -0
  355. package/dist/v1/libs/tools/TinySiteMapStream.cjs +121 -0
  356. package/dist/v1/libs/tools/TinySiteMapStream.d.mts +51 -0
  357. package/dist/v1/libs/tools/TinySiteMapStream.d.mts.map +1 -0
  358. package/dist/v1/libs/tools/TinySiteMapStream.mjs +85 -0
  359. package/dist/v1/libs/tools/TinyURLSecurityVerifier.cjs +444 -0
  360. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts +217 -0
  361. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts.map +1 -0
  362. package/dist/v1/libs/tools/TinyURLSecurityVerifier.mjs +394 -0
  363. package/dist/v1/libs/tools/TinyUriParser/BlueSky.cjs +613 -0
  364. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts +152 -0
  365. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts.map +1 -0
  366. package/dist/v1/libs/tools/TinyUriParser/BlueSky.mjs +527 -0
  367. package/dist/v1/libs/tools/TinyUriParser/Discord.cjs +1119 -0
  368. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts +306 -0
  369. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts.map +1 -0
  370. package/dist/v1/libs/tools/TinyUriParser/Discord.mjs +968 -0
  371. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.cjs +469 -0
  372. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts +80 -0
  373. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts.map +1 -0
  374. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.mjs +379 -0
  375. package/dist/v1/libs/tools/TinyUriParser.cjs +217 -0
  376. package/dist/v1/libs/tools/TinyUriParser.d.mts +109 -0
  377. package/dist/v1/libs/tools/TinyUriParser.d.mts.map +1 -0
  378. package/dist/v1/libs/tools/TinyUriParser.mjs +183 -0
  379. package/dist/v1/libs/utils/TinyCloner.cjs +466 -0
  380. package/dist/v1/libs/utils/TinyCloner.d.mts +221 -0
  381. package/dist/v1/libs/utils/TinyCloner.d.mts.map +1 -0
  382. package/dist/v1/libs/utils/TinyCloner.mjs +416 -0
  383. package/dist/v1/libs/utils/TinyPromiseQueue.cjs +1 -1
  384. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts +2 -2
  385. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts.map +1 -1
  386. package/dist/v1/libs/utils/TinyPromiseQueue.mjs +1 -1
  387. package/dist/v1/libs/utils/TinyThrottledApi.cjs +333 -0
  388. package/dist/v1/libs/utils/TinyThrottledApi.d.mts +163 -0
  389. package/dist/v1/libs/utils/TinyThrottledApi.d.mts.map +1 -0
  390. package/dist/v1/libs/utils/TinyThrottledApi.mjs +294 -0
  391. package/dist/v1/libs/worker/browser/TinyWebWorker.cjs +342 -0
  392. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts +97 -0
  393. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts.map +1 -0
  394. package/dist/v1/libs/worker/browser/TinyWebWorker.mjs +305 -0
  395. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.cjs +346 -0
  396. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts +127 -0
  397. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts.map +1 -0
  398. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.mjs +304 -0
  399. package/dist/v1/regexp/Email.cjs +185 -0
  400. package/dist/v1/regexp/Email.d.mts +73 -0
  401. package/dist/v1/regexp/Email.d.mts.map +1 -0
  402. package/dist/v1/regexp/Email.mjs +153 -0
  403. package/dist/v1/regexp/Glob.cjs +293 -0
  404. package/dist/v1/regexp/Glob.d.mts +45 -0
  405. package/dist/v1/regexp/Glob.d.mts.map +1 -0
  406. package/dist/v1/regexp/Glob.mjs +260 -0
  407. package/dist/v1/regexp/Ipv4.cjs +57 -0
  408. package/dist/v1/regexp/Ipv4.d.mts +29 -0
  409. package/dist/v1/regexp/Ipv4.d.mts.map +1 -0
  410. package/dist/v1/regexp/Ipv4.mjs +45 -0
  411. package/dist/v1/regexp/Ipv6.cjs +67 -0
  412. package/dist/v1/regexp/Ipv6.d.mts +29 -0
  413. package/dist/v1/regexp/Ipv6.d.mts.map +1 -0
  414. package/dist/v1/regexp/Ipv6.mjs +54 -0
  415. package/dist/v1/regexp/SegmentExtractor.cjs +145 -0
  416. package/dist/v1/regexp/SegmentExtractor.d.mts +91 -0
  417. package/dist/v1/regexp/SegmentExtractor.d.mts.map +1 -0
  418. package/dist/v1/regexp/SegmentExtractor.mjs +116 -0
  419. package/dist/v1/regexp/UrlDetector.cjs +125 -0
  420. package/dist/v1/regexp/UrlDetector.d.mts +67 -0
  421. package/dist/v1/regexp/UrlDetector.d.mts.map +1 -0
  422. package/dist/v1/regexp/UrlDetector.mjs +102 -0
  423. package/dist/v1/regexp/Username/index.cjs +233 -0
  424. package/dist/v1/regexp/Username/index.d.mts +77 -0
  425. package/dist/v1/regexp/Username/index.d.mts.map +1 -0
  426. package/dist/v1/regexp/Username/index.mjs +199 -0
  427. package/dist/v1/regexp/Username/jsDoc.cjs +2 -0
  428. package/dist/v1/regexp/Username/jsDoc.d.mts +57 -0
  429. package/dist/v1/regexp/Username/jsDoc.d.mts.map +1 -0
  430. package/dist/v1/regexp/Username/jsDoc.mjs +18 -0
  431. package/dist/v1/regexp/Username/templates/BlueSky.cjs +56 -0
  432. package/dist/v1/regexp/Username/templates/BlueSky.d.mts +35 -0
  433. package/dist/v1/regexp/Username/templates/BlueSky.d.mts.map +1 -0
  434. package/dist/v1/regexp/Username/templates/BlueSky.mjs +52 -0
  435. package/dist/v1/regexp/Username/templates/Discord.cjs +505 -0
  436. package/dist/v1/regexp/Username/templates/Discord.d.mts +209 -0
  437. package/dist/v1/regexp/Username/templates/Discord.d.mts.map +1 -0
  438. package/dist/v1/regexp/Username/templates/Discord.mjs +458 -0
  439. package/dist/v1/regexp/Username/templates/MatrixProtocol.cjs +143 -0
  440. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts +70 -0
  441. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts.map +1 -0
  442. package/dist/v1/regexp/Username/templates/MatrixProtocol.mjs +128 -0
  443. package/dist/v1/regexp/Username/templates/deprecated/Discord.cjs +24 -0
  444. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts +17 -0
  445. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts.map +1 -0
  446. package/dist/v1/regexp/Username/templates/deprecated/Discord.mjs +20 -0
  447. package/dist/v1/regexp/Username/templates/index.cjs +11 -0
  448. package/dist/v1/regexp/Username/templates/index.d.mts +5 -0
  449. package/dist/v1/regexp/Username/templates/index.d.mts.map +1 -0
  450. package/dist/v1/regexp/Username/templates/index.mjs +4 -0
  451. package/dist/v1/regexp/index.cjs +41 -0
  452. package/dist/v1/regexp/index.d.mts +9 -0
  453. package/dist/v1/regexp/index.d.mts.map +1 -0
  454. package/dist/v1/regexp/index.mjs +8 -0
  455. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.cjs +64 -0
  456. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts +11 -0
  457. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts.map +1 -0
  458. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.mjs +51 -0
  459. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.cjs +66 -0
  460. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts +11 -0
  461. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts.map +1 -0
  462. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.mjs +51 -0
  463. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.cjs +39 -0
  464. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts +11 -0
  465. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts.map +1 -0
  466. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.mjs +28 -0
  467. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.cjs +494 -0
  468. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts +142 -0
  469. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts.map +1 -0
  470. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.mjs +445 -0
  471. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.cjs +725 -0
  472. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts +293 -0
  473. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts.map +1 -0
  474. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs +614 -0
  475. package/dist/v1/webTemplates/bootstrap/5.3/scss/input/Placeholder-Colors-Fix.scss +64 -0
  476. package/dist/v1/webTemplates/bootstrap/5.3/scss/spacing/Spacing-Plus.scss +31 -0
  477. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.cjs +135 -0
  478. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts +83 -0
  479. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts.map +1 -0
  480. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.mjs +120 -0
  481. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.cjs +127 -0
  482. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts +95 -0
  483. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts.map +1 -0
  484. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.mjs +109 -0
  485. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.cjs +83 -0
  486. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts +46 -0
  487. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts.map +1 -0
  488. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.mjs +71 -0
  489. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.cjs +493 -0
  490. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts +67 -0
  491. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts.map +1 -0
  492. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.mjs +399 -0
  493. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.cjs +35 -0
  494. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts +6 -0
  495. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts.map +1 -0
  496. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.mjs +29 -0
  497. package/docs/info/RegExp.md +74 -0
  498. package/docs/v1/Exports.md +111 -0
  499. package/docs/v1/README.md +117 -13
  500. package/docs/v1/basics/asyncReplace.md +2 -0
  501. package/docs/v1/basics/browserDetector.md +28 -11
  502. package/docs/v1/basics/crypto.md +85 -0
  503. package/docs/v1/basics/deprecated/html.md +2 -0
  504. package/docs/v1/basics/deprecated/objFilter.md +2 -0
  505. package/docs/v1/basics/html.md +2 -0
  506. package/docs/v1/basics/objChecker.md +55 -0
  507. package/docs/v1/basics/objFilter.md +57 -86
  508. package/docs/v1/basics/promiseUtils.md +12 -3
  509. package/docs/v1/basics/text.md +0 -1
  510. package/docs/v1/libs/array/TinyArrayComparator.md +50 -39
  511. package/docs/v1/libs/fs/TinyFS.md +752 -0
  512. package/docs/v1/libs/fs/TinyOPFSFileSystem.md +495 -0
  513. package/docs/v1/libs/fs/TinyStorageBucketFileSystem.md +407 -0
  514. package/docs/v1/libs/plugin/TinyPlugin.md +441 -0
  515. package/docs/v1/libs/plugin/TinyVersion.md +145 -0
  516. package/docs/v1/libs/router/TinyRouter.md +216 -0
  517. package/docs/v1/libs/storage/TinyMapCache.md +219 -0
  518. package/docs/v1/libs/storage/TinySetMapDatabase.md +478 -0
  519. package/docs/v1/libs/sw/browser/TinyNotificationAdapter.md +280 -0
  520. package/docs/v1/libs/sw/browser/TinyPushManager.md +782 -0
  521. package/docs/v1/libs/sw/browser/TinyServiceWorker.md +365 -0
  522. package/docs/v1/libs/sw/browser/plugins/TabManager.md +133 -0
  523. package/docs/v1/libs/sw/service/TinyPushRouter.md +314 -0
  524. package/docs/v1/libs/sw/service/TinyServiceWorkerEngine.md +748 -0
  525. package/docs/v1/libs/sw/service/plugins/GlobBypassPlugin.md +229 -0
  526. package/docs/v1/libs/sw/service/plugins/GlobCachePlugin.md +91 -0
  527. package/docs/v1/libs/sw/service/plugins/Ping.md +36 -0
  528. package/docs/v1/libs/sw/service/plugins/TabManager.md +64 -0
  529. package/docs/v1/libs/sw/service/plugins/ViteFileDetector.md +92 -0
  530. package/docs/v1/libs/sw/service/shared/TinyPushPayload.md +316 -0
  531. package/docs/v1/libs/text/TinyI18.md +80 -56
  532. package/docs/v1/libs/tools/TinyBrowserMonitor.md +170 -0
  533. package/docs/v1/libs/tools/TinyDebugger.md +117 -1
  534. package/docs/v1/libs/tools/TinyHtmlTagRegexBuilder.md +141 -0
  535. package/docs/v1/libs/tools/TinyHttpResponseRegistry.md +129 -0
  536. package/docs/v1/libs/tools/TinyPasswordValidator.md +153 -0
  537. package/docs/v1/libs/tools/TinyPkgExportValidator.md +45 -1
  538. package/docs/v1/libs/tools/TinySiteMap.md +134 -0
  539. package/docs/v1/libs/tools/TinySiteMapStream.md +97 -0
  540. package/docs/v1/libs/tools/TinyURLSecurityVerifier.md +146 -0
  541. package/docs/v1/libs/tools/TinyUriParser/Discord.md +374 -0
  542. package/docs/v1/libs/tools/TinyUriParser/MatrixProtocol.md +54 -0
  543. package/docs/v1/libs/tools/TinyUriParser.md +128 -0
  544. package/docs/v1/libs/utils/TinyCloner.md +126 -0
  545. package/docs/v1/libs/utils/TinyPromiseQueue.md +1 -1
  546. package/docs/v1/libs/utils/TinyThrottledApi.md +219 -0
  547. package/docs/v1/libs/worker/browser/TinyWebWorker.md +331 -0
  548. package/docs/v1/libs/worker/engine/TinyWebWorkerEngine.md +137 -0
  549. package/docs/v1/regexp/Email.md +127 -0
  550. package/docs/v1/regexp/Glob.md +155 -0
  551. package/docs/v1/regexp/IPv4.md +103 -0
  552. package/docs/v1/regexp/IPv6.md +122 -0
  553. package/docs/v1/regexp/SegmentExtractor.md +120 -0
  554. package/docs/v1/regexp/UrlDetector.md +117 -0
  555. package/docs/v1/regexp/Username/Base.md +131 -0
  556. package/docs/v1/regexp/Username/Discord.md +267 -0
  557. package/docs/v1/regexp/Username/MatrixProtocol.md +131 -0
  558. package/docs/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters.md +569 -0
  559. package/docs/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.md +174 -0
  560. package/docs/v1/webTemplates/media/MediaValidator/v1/Browser.md +123 -0
  561. package/docs/v1/webTemplates/media/MediaValidator/v1/Node.md +136 -0
  562. package/docs/v1/webTemplates/multiformats/14.0/IPFSHasher.md +310 -0
  563. package/docs/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.md +131 -0
  564. package/docs/v1/webTemplates/vite/7.3/plugins/githubUtils.md +50 -0
  565. package/package.json +313 -18
  566. package/types/EventEmitter.d.ts +48 -0
  567. package/dist/v1/libs/text/TinyI18.d.mts.map +0 -1
@@ -1,4 +1,3 @@
1
- import { EventEmitter } from 'events';
2
1
  export type EncodeFn = (value: any, encodeSpecialJson: encodeSpecialJson) => any;
3
2
  export type DecodeFn = {
4
3
  /**
@@ -13,6 +12,52 @@ export type DecodeFn = {
13
12
  export type encodeSpecialJson = (value: any) => any;
14
13
  export type decodeSpecialJson = (value: any) => any;
15
14
  export type LocalStorageJsonValue = (Record<string | number | symbol, any> | any[] | Map<string | number | symbol, any> | Set<any>);
15
+ export type TinyLocalStorageEvents = {
16
+ /**
17
+ * - Emitted when a cross-tab storage event is received.
18
+ */
19
+ storage: (ev: StorageEvent) => void;
20
+ /**
21
+ * - Emitted when a JSON value is stored.
22
+ */
23
+ setJson: (name: string, data: any) => void;
24
+ /**
25
+ * - Emitted when a Date is stored.
26
+ */
27
+ setDate: (name: string, data: Date) => void;
28
+ /**
29
+ * - Emitted when a RegExp is stored.
30
+ */
31
+ setRegExp: (name: string, data: RegExp) => void;
32
+ /**
33
+ * - Emitted when a BigInt is stored.
34
+ */
35
+ setBigInt: (name: string, data: bigint) => void;
36
+ /**
37
+ * - Emitted when a Symbol is stored.
38
+ */
39
+ setSymbol: (name: string, data: symbol) => void;
40
+ /**
41
+ * - Emitted when a raw item is stored.
42
+ */
43
+ setItem: (name: string, data: any) => void;
44
+ /**
45
+ * - Emitted when a string is stored.
46
+ */
47
+ setString: (name: string, data: string) => void;
48
+ /**
49
+ * - Emitted when a number is stored.
50
+ */
51
+ setNumber: (name: string, data: number) => void;
52
+ /**
53
+ * - Emitted when a boolean is stored.
54
+ */
55
+ setBool: (name: string, data: boolean) => void;
56
+ /**
57
+ * - Emitted when an item is removed.
58
+ */
59
+ removeItem: (name: string) => void;
60
+ };
16
61
  /**
17
62
  * A function that encodes a value into a serializable JSON-compatible format.
18
63
  *
@@ -53,6 +98,23 @@ export type LocalStorageJsonValue = (Record<string | number | symbol, any> | any
53
98
  *
54
99
  * @typedef {(Record<string|number|symbol, any> | any[] | Map<string|number|symbol, any> | Set<any>)} LocalStorageJsonValue
55
100
  */
101
+ /**
102
+ * Event map for {@link TinyLocalStorage}.
103
+ * @typedef {Object} TinyLocalStorageEvents
104
+ * @property {(ev: StorageEvent) => void} storage - Emitted when a cross-tab storage event is received.
105
+ * @property {(name: string, data: any) => void} setJson - Emitted when a JSON value is stored.
106
+ * @property {(name: string, data: Date) => void} setDate - Emitted when a Date is stored.
107
+ * @property {(name: string, data: RegExp) => void} setRegExp - Emitted when a RegExp is stored.
108
+ * @property {(name: string, data: bigint) => void} setBigInt - Emitted when a BigInt is stored.
109
+ * @property {(name: string, data: symbol) => void} setSymbol - Emitted when a Symbol is stored.
110
+ * @property {(name: string, data: any) => void} setItem - Emitted when a raw item is stored.
111
+ * @property {(name: string, data: string) => void} setString - Emitted when a string is stored.
112
+ * @property {(name: string, data: number) => void} setNumber - Emitted when a number is stored.
113
+ * @property {(name: string, data: boolean) => void} setBool - Emitted when a boolean is stored.
114
+ * @property {(name: string) => void} removeItem - Emitted when an item is removed.
115
+ */
116
+ /** @type {new (dbName?: string) => import('../../jsdoc/EventEmitter.mjs').ICustomEventEmitter<TinyLocalStorageEvents>} */
117
+ declare const TypedEventEmitter: new (dbName?: string) => import('../../jsdoc/EventEmitter.mjs').ICustomEventEmitter<TinyLocalStorageEvents>;
56
118
  /**
57
119
  * A powerful wrapper for Web Storage (`localStorage` or `sessionStorage`) that supports
58
120
  * type-safe methods and full JSON-like structure encoding and decoding.
@@ -77,7 +139,7 @@ export type LocalStorageJsonValue = (Record<string | number | symbol, any> | any
77
139
  *
78
140
  * This class is suitable for applications that require structured persistence in the browser.
79
141
  */
80
- declare class TinyLocalStorage extends EventEmitter {
142
+ declare class TinyLocalStorage extends TypedEventEmitter {
81
143
  #private;
82
144
  /**
83
145
  * Checks whether a JSON-serializable type is already registered.
@@ -1 +1 @@
1
- {"version":3,"file":"TinyLocalStorage.d.mts","sourceRoot":"","sources":["../../../../src/v1/libs/storage/TinyLocalStorage.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TinyLocalStorage.d.mts","sourceRoot":"","sources":["../../../../src/v1/libs/storage/TinyLocalStorage.mjs"],"names":[],"mappings":"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"}
@@ -60,6 +60,23 @@ const customTypesFreezed = new Set([
60
60
  *
61
61
  * @typedef {(Record<string|number|symbol, any> | any[] | Map<string|number|symbol, any> | Set<any>)} LocalStorageJsonValue
62
62
  */
63
+ /**
64
+ * Event map for {@link TinyLocalStorage}.
65
+ * @typedef {Object} TinyLocalStorageEvents
66
+ * @property {(ev: StorageEvent) => void} storage - Emitted when a cross-tab storage event is received.
67
+ * @property {(name: string, data: any) => void} setJson - Emitted when a JSON value is stored.
68
+ * @property {(name: string, data: Date) => void} setDate - Emitted when a Date is stored.
69
+ * @property {(name: string, data: RegExp) => void} setRegExp - Emitted when a RegExp is stored.
70
+ * @property {(name: string, data: bigint) => void} setBigInt - Emitted when a BigInt is stored.
71
+ * @property {(name: string, data: symbol) => void} setSymbol - Emitted when a Symbol is stored.
72
+ * @property {(name: string, data: any) => void} setItem - Emitted when a raw item is stored.
73
+ * @property {(name: string, data: string) => void} setString - Emitted when a string is stored.
74
+ * @property {(name: string, data: number) => void} setNumber - Emitted when a number is stored.
75
+ * @property {(name: string, data: boolean) => void} setBool - Emitted when a boolean is stored.
76
+ * @property {(name: string) => void} removeItem - Emitted when an item is removed.
77
+ */
78
+ /** @type {new (dbName?: string) => import('../../jsdoc/EventEmitter.mjs').ICustomEventEmitter<TinyLocalStorageEvents>} */
79
+ const TypedEventEmitter = /** @type {any} */ (EventEmitter);
63
80
  /**
64
81
  * A powerful wrapper for Web Storage (`localStorage` or `sessionStorage`) that supports
65
82
  * type-safe methods and full JSON-like structure encoding and decoding.
@@ -84,7 +101,7 @@ const customTypesFreezed = new Set([
84
101
  *
85
102
  * This class is suitable for applications that require structured persistence in the browser.
86
103
  */
87
- class TinyLocalStorage extends EventEmitter {
104
+ class TinyLocalStorage extends TypedEventEmitter {
88
105
  /**
89
106
  * Checks whether a JSON-serializable type is already registered.
90
107
  *
@@ -0,0 +1,373 @@
1
+ 'use strict';
2
+
3
+ var events = require('events');
4
+
5
+ /**
6
+ * @template T
7
+ * @callback ForEachCallback
8
+ * @param {T} data - The value of the current entry.
9
+ * @param {string} key - The key of the current entry.
10
+ * @param {TinyMapCache<T>} cache - The cache instance that is being iterated.
11
+ * @returns {void}
12
+ */
13
+
14
+ /**
15
+ * @template T
16
+ * @typedef {Object} SetEventPayload
17
+ * @property {string} key - The key that was set.
18
+ * @property {T} data - The data that was set.
19
+ */
20
+
21
+ /**
22
+ * @template T
23
+ * @typedef {Object} GetEventPayload
24
+ * @property {string} key - The key that was accessed.
25
+ * @property {boolean} hit - True if the key was found and is valid, false otherwise.
26
+ */
27
+
28
+ /**
29
+ * @template T
30
+ * @typedef {Object} DeleteEventPayload
31
+ * @property {string} key - The key that was removed.
32
+ */
33
+
34
+ /**
35
+ * @template T
36
+ * @typedef {Object} ExpireEventPayload
37
+ * @property {string} key - The key that expired.
38
+ * @property {T} data - The data that was removed due to expiration.
39
+ */
40
+
41
+ /**
42
+ * @typedef {Object} PurgeEventPayload
43
+ * @property {number} count - The number of items removed during purge.
44
+ */
45
+
46
+ /**
47
+ * @template T
48
+ * @typedef {Object} CacheEntry
49
+ * @property {T} data - The actual data being stored.
50
+ * @property {number} timestamp - The Unix timestamp (ms) when the data was stored.
51
+ */
52
+
53
+ /**
54
+ * A Map collection where keys are strings and values are CacheEntry objects.
55
+ * @template T
56
+ * @typedef {Map<string, CacheEntry<T>>} CacheMap
57
+ */
58
+
59
+ /**
60
+ * A plain object representation of the cache, where keys are strings and values are CacheEntry objects.
61
+ * @template T
62
+ * @typedef {Object.<string, CacheEntry<T>>} CacheObject
63
+ */
64
+
65
+ /**
66
+ * Event map for {@link TinyMapCache}.
67
+ * @template T
68
+ * @typedef {Object} TinyMapCacheEvents
69
+ * @property {(payload: SetEventPayload<T>) => void} set - Emitted when an item is stored.
70
+ * @property {(payload: DeleteEventPayload<T>) => void} delete - Emitted when an item is removed.
71
+ * @property {(payload: ExpireEventPayload<T>) => void} expire - Emitted when an item expires.
72
+ * @property {(payload: PurgeEventPayload) => void} purge - Emitted after a purge cycle removes items.
73
+ * @property {() => void} clear - Emitted when the cache is cleared.
74
+ */
75
+
76
+ /**
77
+ * @template T
78
+ * @typedef {import('../../jsdoc/EventEmitter.mjs').ICustomEventEmitter<TinyMapCacheEvents<T>>} TinyMapCacheEmitter
79
+ */
80
+
81
+ /** @type {new () => TinyMapCacheEmitter<any>} */
82
+ const TypedEventEmitter = /** @type {any} */ (events.EventEmitter);
83
+
84
+ /**
85
+ * @template {any} T
86
+ * In-memory cache manager to prevent duplicate requests.
87
+ */
88
+ class TinyMapCache extends TypedEventEmitter {
89
+ /**
90
+ * A private collection of all active `TinyMapCache` instances.
91
+ * This set is used to facilitate cascaded operations (like `purgeExpired`) across all existing cache instances.
92
+ * @type {Set<TinyMapCache<any>>}
93
+ */
94
+ static #instances = new Set();
95
+
96
+ /**
97
+ * A collection of all active `TinyMapCache` instances.
98
+ * This collection is used to facilitate cascaded operations (like `purgeExpired`) across all existing cache instances.
99
+ * @type {Array<TinyMapCache<any>>}
100
+ */
101
+ static get activeInstances() {
102
+ return Array.from(TinyMapCache.#instances);
103
+ }
104
+
105
+ /**
106
+ * Returns the total number of active `TinyMapCache` instances currently being tracked.
107
+ * @returns {number} The count of active instances.
108
+ */
109
+ static get activeInstancesSize() {
110
+ return TinyMapCache.#instances.size;
111
+ }
112
+
113
+ constructor() {
114
+ super();
115
+ }
116
+
117
+ /** @type {CacheMap<T>} */
118
+ #cache = new Map();
119
+ /**
120
+ * Time-to-live: 5 minutes in milliseconds
121
+ * @type {number}
122
+ */
123
+ #ttl = 300000;
124
+
125
+ /**
126
+ * Gets the current Time-To-Live (TTL) in milliseconds.
127
+ * @returns {number}
128
+ */
129
+ get ttl() {
130
+ return this.#ttl;
131
+ }
132
+
133
+ /**
134
+ * Sets the Time-To-Live (TTL) in milliseconds.
135
+ * @param {number} value - The new TTL value.
136
+ * @throws {TypeError} If the value is not a number.
137
+ * @throws {RangeError} If the value is less than 0.
138
+ */
139
+ set ttl(value) {
140
+ if (typeof value !== 'number') {
141
+ throw new TypeError('The TTL value must be a number.');
142
+ }
143
+ if (value < 0) {
144
+ throw new RangeError('The TTL value cannot be negative.');
145
+ }
146
+ this.#ttl = value;
147
+ }
148
+
149
+ /**
150
+ * Returns the number of items currently stored in the cache.
151
+ * @returns {number}
152
+ */
153
+ get size() {
154
+ return this.#cache.size;
155
+ }
156
+
157
+ /**
158
+ * Checks if a specific key exists in the cache.
159
+ *
160
+ * Note: This method triggers a full purge of all expired items in the cache.
161
+ * @param {string} key - The identifier for the data.
162
+ * @returns {boolean} True if the key exists, false otherwise.
163
+ * @throws {TypeError} If the key is not a string.
164
+ */
165
+ has(key) {
166
+ if (typeof key !== 'string') {
167
+ throw new TypeError('The cache key must be a string.');
168
+ }
169
+ this.purgeExpired(true);
170
+ return this.#cache.has(key);
171
+ }
172
+
173
+ /**
174
+ * Removes the item associated with the specified key from the cache.
175
+ *
176
+ * Note: This method triggers a full purge of all expired items in the cache.
177
+ * @param {string} key - The identifier for the data.
178
+ * @returns {boolean} True if an element in the Map existed and has been removed, false otherwise.
179
+ * @throws {TypeError} If the key is not a string.
180
+ */
181
+ delete(key) {
182
+ if (typeof key !== 'string') {
183
+ throw new TypeError('The cache key must be a string.');
184
+ }
185
+ this.purgeExpired(true);
186
+ const deleted = this.#cache.delete(key);
187
+ if (deleted) {
188
+ /** @type {DeleteEventPayload<T>} */
189
+ const payload = { key };
190
+ this.emit('delete', payload);
191
+ }
192
+ return deleted;
193
+ }
194
+
195
+ /**
196
+ * Saves an item to the cache.
197
+ *
198
+ * Note: This method triggers a full purge of all expired items in the cache.
199
+ * @param {string} key - The identifier for the data.
200
+ * @param {T} data - The data to be stored.
201
+ * @throws {TypeError} If the key is not a string.
202
+ */
203
+ set(key, data) {
204
+ if (typeof key !== 'string') {
205
+ throw new TypeError('The cache key must be a string.');
206
+ }
207
+ this.purgeExpired(true);
208
+ if (!TinyMapCache.#instances.has(this)) TinyMapCache.#instances.add(this);
209
+
210
+ this.#cache.set(key, {
211
+ data,
212
+ timestamp: Date.now(),
213
+ });
214
+
215
+ /** @type {SetEventPayload<T>} */
216
+ const payload = { key, data };
217
+ this.emit('set', payload);
218
+ }
219
+
220
+ /**
221
+ * Retrieves an item if it is still valid.
222
+ *
223
+ * Note: This method triggers a full purge of all expired items in the cache.
224
+ * @param {string} key - The identifier for the data.
225
+ * @returns {T | null} The data if valid, or null if expired/not found.
226
+ * @throws {TypeError} If the key is not a string.
227
+ */
228
+ get(key) {
229
+ if (typeof key !== 'string') {
230
+ throw new TypeError('The cache key must be a string.');
231
+ }
232
+ this.purgeExpired(true);
233
+ const cached = this.#cache.get(key);
234
+ if (!cached) return null;
235
+
236
+ return cached.data;
237
+ }
238
+
239
+ /**
240
+ * Returns the string tag used by `Object.prototype.toString`.
241
+ * @returns {string} The string tag for this class.
242
+ */
243
+ get [Symbol.toStringTag]() {
244
+ return 'TinyMapCache';
245
+ }
246
+
247
+ /**
248
+ * Returns a new iterator that yields the keys of all valid (non-expired) entries.
249
+ *
250
+ * Note: This method triggers a full purge of all expired items in the cache.
251
+ * @returns {IterableIterator<string>} An iterator over the cache keys.
252
+ */
253
+ keys() {
254
+ this.purgeExpired(true);
255
+ return this.#validEntries()
256
+ .map(([key]) => key)
257
+ .values();
258
+ }
259
+
260
+ /**
261
+ * Returns a new iterator that yields the values of all valid (non-expired) entries.
262
+ *
263
+ * Note: This method triggers a full purge of all expired items in the cache.
264
+ * @returns {IterableIterator<T>} An iterator over the cache values.
265
+ */
266
+ values() {
267
+ this.purgeExpired(true);
268
+ return this.#validEntries()
269
+ .map(([, data]) => data)
270
+ .values();
271
+ }
272
+
273
+ /**
274
+ * Returns a new iterator that yields the `[key, value]` pairs of all valid (non-expired) entries.
275
+ *
276
+ * Note: This method triggers a full purge of all expired items in the cache.
277
+ * @returns {IterableIterator<[string, T]>} An iterator over the cache entries.
278
+ */
279
+ entries() {
280
+ this.purgeExpired(true);
281
+ return this.#validEntries().values();
282
+ }
283
+
284
+ /**
285
+ * Returns a new iterator over the `[key, value]` pairs of all valid (non-expired) entries.
286
+ * Alias for `entries()`, enabling `for...of` and spread syntax.
287
+ *
288
+ * Note: This method triggers a full purge of all expired items in the cache.
289
+ * @returns {IterableIterator<[string, T]>} An iterator over the cache entries.
290
+ */
291
+ [Symbol.iterator]() {
292
+ return this.entries();
293
+ }
294
+
295
+ /**
296
+ * Executes a provided function once for each valid (non-expired) entry.
297
+ *
298
+ * Note: This method triggers a full purge of all expired items in the cache.
299
+ * @param {ForEachCallback<T>} callbackFn - The function to execute for each entry.
300
+ * @param {any} [thisArg] - The value to use as `this` when executing `callbackFn`.
301
+ * @returns {void}
302
+ * @throws {TypeError} If the callback is not a function.
303
+ */
304
+ forEach(callbackFn, thisArg) {
305
+ if (typeof callbackFn !== 'function') {
306
+ throw new TypeError('The callback must be a function.');
307
+ }
308
+ this.purgeExpired(true);
309
+ for (const [key, data] of this.#validEntries()) {
310
+ callbackFn.call(thisArg, data, key, this);
311
+ }
312
+ }
313
+
314
+ /**
315
+ * Builds a snapshot of all valid (non-expired) entries as `[key, value]` pairs.
316
+ * Expired entries are expected to be removed beforehand via `purgeExpired`.
317
+ * @returns {Array<[string, T]>} The list of valid entries.
318
+ */
319
+ #validEntries() {
320
+ /** @type {Array<[string, T]>} */
321
+ const entries = [];
322
+ for (const [key, entry] of this.#cache.entries()) {
323
+ entries.push([key, entry.data]);
324
+ }
325
+ return entries;
326
+ }
327
+
328
+ /**
329
+ * Iterates through the current cache and removes all entries that have exceeded the TTL.
330
+ * @param {boolean} [clearAll=true] - If true, triggers a purge on all other active cache instances.
331
+ * @returns {void}
332
+ */
333
+ purgeExpired(clearAll = false) {
334
+ const now = Date.now();
335
+ let purgedCount = 0;
336
+
337
+ for (const [key, entry] of this.#cache.entries()) {
338
+ if (now - entry.timestamp > this.#ttl) {
339
+ this.#cache.delete(key);
340
+ purgedCount++;
341
+
342
+ /** @type {ExpireEventPayload<T>} */
343
+ const expirePayload = { key, data: entry.data };
344
+ this.emit('expire', expirePayload);
345
+ }
346
+ }
347
+
348
+ if (purgedCount > 0) {
349
+ /** @type {PurgeEventPayload} */
350
+ const purgePayload = { count: purgedCount };
351
+ this.emit('purge', purgePayload);
352
+ }
353
+
354
+ if (this.#cache.size < 1) TinyMapCache.#instances.delete(this);
355
+
356
+ if (clearAll)
357
+ TinyMapCache.#instances.forEach((i) => {
358
+ if (i !== this) i.purgeExpired(false);
359
+ });
360
+ }
361
+
362
+ /**
363
+ * Removes all items from the cache.
364
+ * @returns {void}
365
+ */
366
+ clear() {
367
+ TinyMapCache.#instances.delete(this);
368
+ this.#cache.clear();
369
+ this.emit('clear');
370
+ }
371
+ }
372
+
373
+ module.exports = TinyMapCache;