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,457 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var TinyPromiseQueue = require('../../../utils/TinyPromiseQueue.cjs');
6
+ var TinyServiceWorkerEngine = require('../TinyServiceWorkerEngine.cjs');
7
+
8
+ /** @type {ServiceWorkerGlobalScope} */
9
+ // @ts-ignore
10
+ const sw = self;
11
+
12
+ /** @typedef {import('../../../tools/TinyDebugger.mjs').DebuggerConstructor} DebuggerConstructor - The constructor function for a debugger instance. */
13
+
14
+ /**
15
+ * Represents information about a single browser tab.
16
+ * @typedef {Object} TabInfo
17
+ * @property {string} id - The unique Client ID provided by the browser.
18
+ * @property {string} url - The current URL of the tab.
19
+ * @property {string} title - The document title of the tab.
20
+ * @property {boolean} isFocused - Whether the tab currently has window focus.
21
+ * @property {any} [data] - Custom data provided by the client.
22
+ */
23
+
24
+ /**
25
+ * A mapping of unique tab IDs to their corresponding TabInfo objects.
26
+ * @typedef {Map<string, TabInfo>} TabInstance
27
+ */
28
+
29
+ /**
30
+ * A layer within the TinyPlugin system specifically designed to manage and track tab instances.
31
+ */
32
+ class TinySwTabsLayer extends TinyServiceWorkerEngine.TinyPluginLayer {
33
+ /**
34
+ * A queue used to manage and sequence asynchronous operations to prevent race conditions.
35
+ * @type {TinyPromiseQueue}
36
+ */
37
+ #queue = new TinyPromiseQueue();
38
+
39
+ /**
40
+ * Gets the internal promise queue instance.
41
+ * @returns {TinyPromiseQueue} - The instance of the promise queue.
42
+ */
43
+ get queue() {
44
+ return this.#queue;
45
+ }
46
+
47
+ /**
48
+ * A static registry that stores all active tab instances indexed by a unique key.
49
+ * @type {Map<number, TabInstance>}
50
+ */
51
+ static #instances = new Map();
52
+ /**
53
+ * A static counter used to assign unique keys to new TinySwTabsLayer instances.
54
+ * @type {number}
55
+ */
56
+ static #lastIndex = -1;
57
+
58
+ /**
59
+ * The unique identifier assigned to the current instance of the layer.
60
+ * @type {number}
61
+ */
62
+ #key;
63
+ /**
64
+ * A private Map storing the current session's tab information.
65
+ * @type {TabInstance}
66
+ */
67
+ #tabs = new Map();
68
+
69
+ /**
70
+ * A promise that resolves to the IndexedDB database instance.
71
+ * @type {Promise<IDBDatabase> | undefined}
72
+ */
73
+ #dbPromise;
74
+
75
+ /**
76
+ * Initializes the database connection for persistence.
77
+ * @returns {Promise<IDBDatabase>}
78
+ */
79
+ async #getDB() {
80
+ if (this.#dbPromise) return this.#dbPromise;
81
+
82
+ this.#dbPromise = new Promise((resolve, reject) => {
83
+ const request = indexedDB.open('TinySwTabsDB', 1);
84
+
85
+ request.onupgradeneeded = () => {
86
+ request.result.createObjectStore('tabs');
87
+ };
88
+
89
+ request.onsuccess = () => resolve(request.result);
90
+ request.onerror = () => reject(request.error);
91
+ });
92
+
93
+ return this.#dbPromise;
94
+ }
95
+
96
+ /**
97
+ * Loads the tab registry from IndexedDB into the in-memory Map.
98
+ * @returns {Promise<void>}
99
+ */
100
+ async #loadFromStorage() {
101
+ const db = await this.#getDB();
102
+ return new Promise((resolve, reject) => {
103
+ const transaction = db.transaction('tabs', 'readonly');
104
+ const store = transaction.objectStore('tabs');
105
+ const request = store.getAll();
106
+
107
+ request.onsuccess = () => {
108
+ const data = request.result;
109
+ this.#tabs.clear();
110
+ // Data is stored as an array of TabInfo objects
111
+ data.forEach((tab) => {
112
+ this.#tabs.set(tab.id, tab);
113
+ });
114
+ resolve();
115
+ };
116
+
117
+ request.onerror = () => reject(request.error);
118
+ });
119
+ }
120
+
121
+ /**
122
+ * Synchronizes the current in-memory Map with the IndexedDB storage.
123
+ * @returns {Promise<void>}
124
+ */
125
+ async persist() {
126
+ const db = await this.#getDB();
127
+ return this.#queue.enqueue(
128
+ () =>
129
+ new Promise((resolve, reject) => {
130
+ const transaction = db.transaction('tabs', 'readwrite');
131
+ const store = transaction.objectStore('tabs');
132
+
133
+ // Clear existing registry to ensure deletions are reflected
134
+ store.clear();
135
+
136
+ for (const [id, tab] of this.#tabs.entries()) {
137
+ store.put(tab, id);
138
+ }
139
+
140
+ transaction.oncomplete = () => resolve();
141
+ transaction.onerror = () => reject(transaction.error);
142
+ }),
143
+ );
144
+ }
145
+
146
+ /**
147
+ * Retrieves a snapshot of all tabs currently managed by the instance corresponding to the provided key.
148
+ * @param {number} key - The unique key of the instance to retrieve tabs from.
149
+ * @returns {Record<string, TabInfo>|null} - An object mapping tab IDs to their information, or null if the instance is not found.
150
+ */
151
+ static getTabsInstance(key) {
152
+ const instance = TinySwTabsLayer.#instances.get(key);
153
+ if (!instance) return null;
154
+
155
+ /** @type {Record<string, TabInfo>} */
156
+ const tabs = {};
157
+ instance.forEach((tab, key) => {
158
+ tabs[key] = { ...tab };
159
+ });
160
+
161
+ return tabs;
162
+ }
163
+
164
+ /**
165
+ * Retrieves the information for a specific tab by its unique ID.
166
+ * @param {string} id - The unique identifier of the tab.
167
+ * @returns {TabInfo|null} - The tab information if found, or null if the tab does not exist.
168
+ * @throws {TypeError} If the provided id is not a string.
169
+ * @throws {ReferenceError} If the internal layer instance cannot be found in the registry.
170
+ */
171
+ getTab(id) {
172
+ if (typeof id !== 'string') {
173
+ throw new TypeError('[TinySwTabsLayer] getTab: id must be a string.');
174
+ }
175
+ const instance = TinySwTabsLayer.#instances.get(this.#key);
176
+ if (!instance) {
177
+ throw new ReferenceError('[TinySwTabsLayer] Instance not found for the current key.');
178
+ }
179
+ const tab = instance.get(id);
180
+ if (!tab) return null;
181
+ return { ...tab };
182
+ }
183
+
184
+ /**
185
+ * Initializes the layer, loads persisted data, and begins monitoring tab changes.
186
+ * @template {Parameters<TinySwTabsLayer['_startLayer']>[0]} Plugin - The TinyPlugin template.
187
+ * @param {Plugin} plugin - The TinyPlugin instance.
188
+ * @param {(tabs: TabInstance) => void} callback - The callback function to be executed with the current tabs upon initialization.
189
+ */
190
+ _start(plugin, callback) {
191
+ this.#queue.enqueue(() => this.#loadFromStorage());
192
+ return this._startLayer(plugin, callback, this.#tabs);
193
+ }
194
+
195
+ /**
196
+ * Initializes a new instance of the TinySwTabsLayer, assigning it a unique key and registering it in the static instances registry.
197
+ * @param {Partial<DebuggerConstructor>} [lgConfig] - Configuration options for the instance.
198
+ */
199
+ constructor(lgConfig = {}) {
200
+ super({
201
+ logCfg: {
202
+ id: '[_main_class_TinySW-Tabs_reset_]',
203
+ logger: lgConfig.logger ?? console,
204
+ debugMode: lgConfig.debugMode ?? false,
205
+ useLogColors: lgConfig.useLogColors ?? false,
206
+ },
207
+ });
208
+
209
+ TinySwTabsLayer.#lastIndex++;
210
+ TinySwTabsLayer.#instances.set(TinySwTabsLayer.#lastIndex, this.#tabs);
211
+ this.#key = TinySwTabsLayer.#lastIndex;
212
+ }
213
+ }
214
+
215
+ /**
216
+ * A plugin for TinyServiceWorkerEngine that manages a centralized registry of all open website tabs.
217
+ * @type {import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<TinySwTabsLayer, 'TabManager', '1.0.0', [Partial<DebuggerConstructor>]|[]>} - The plugin installer for the Tab Manager.
218
+ */
219
+ const TinyTabManagerPlugin = (instance, lgConfig = {}) => {
220
+ const engine = instance.engine;
221
+
222
+ /**
223
+ * Stores permission settings per client ID.
224
+ * @type {Map<string, {allowFocusTracking: boolean, allowTabClosing: boolean}>}
225
+ */
226
+ const clientPermissions = new Map();
227
+
228
+ instance.id = 'TabManager';
229
+ instance.version = '1.0.0';
230
+ instance.description = 'Advanced tab manager.';
231
+ instance.authors = ['JasminDreasond'];
232
+ instance.contributors = ['JasminDreasond'];
233
+ instance.categories = ['tab-manager'];
234
+ instance.tags = ['management', 'consistency'];
235
+ instance.allowedGets = ['getTab'];
236
+
237
+ if (!(engine instanceof TinyServiceWorkerEngine)) {
238
+ throw new TypeError('Plugin requires a TinyServiceWorkerEngine instance to function.');
239
+ }
240
+
241
+ const layer = new TinySwTabsLayer(lgConfig);
242
+ layer._start(instance, (tabs) => {
243
+ /**
244
+ * Broadcasts the current list of tabs to all connected clients.
245
+ * @returns {Promise<void>}
246
+ */
247
+ const broadcastUpdate = async () => {
248
+ const tabList = {
249
+ count: tabs.size,
250
+ tabs: Array.from(tabs.values()),
251
+ };
252
+
253
+ // We use replyToAll to notify all clients that the list has changed.
254
+ await TinyServiceWorkerEngine.replyToAll({
255
+ type: 'tab:list_updated',
256
+ data: tabList,
257
+ });
258
+ };
259
+
260
+ /**
261
+ * Compares the in-memory tab registry with the actual browser clients.
262
+ * Removes any tabs that are no longer active in the browser.
263
+ * @returns {Promise<void>}
264
+ */
265
+ const reconcileTabs = async () => {
266
+ const activeClients = await layer.queue.enqueue(() => sw.clients.matchAll());
267
+ const activeIds = new Set(activeClients.map((client) => client.id));
268
+ let ghostFound = false;
269
+
270
+ for (const id of tabs.keys()) {
271
+ if (!activeIds.has(id)) {
272
+ tabs.delete(id);
273
+ ghostFound = true;
274
+ }
275
+ }
276
+
277
+ if (ghostFound) {
278
+ await layer.persist();
279
+ await broadcastUpdate();
280
+ }
281
+ };
282
+
283
+ // 1. Handle Tab Registration (When a new tab opens)
284
+ engine.onApi(
285
+ 'tab:register',
286
+ /**
287
+ * Processes registration messages to add new tabs to the registry.
288
+ */ async (msg) => {
289
+ const { data, clientId } = msg;
290
+
291
+ if (typeof clientId !== 'string') {
292
+ throw new TypeError('[TinyTabManagerPlugin] tab:register: clientId must be a string.');
293
+ }
294
+
295
+ if (typeof data?.url !== 'string' || typeof data?.title !== 'string') {
296
+ throw new TypeError(
297
+ '[TinyTabManagerPlugin] tab:register: data must contain url (string) and title (string).',
298
+ );
299
+ }
300
+
301
+ // Deep validation for permissions
302
+ if (data.permissions !== undefined) {
303
+ if (
304
+ typeof data.permissions.allowFocusTracking !== 'boolean' ||
305
+ typeof data.permissions.allowTabClosing !== 'boolean'
306
+ ) {
307
+ throw new TypeError(
308
+ '[TinyTabManagerPlugin] tab:register: data.permissions must contain allowFocusTracking (boolean) and allowTabClosing (boolean).',
309
+ );
310
+ }
311
+ }
312
+
313
+ // Store permissions sent by the client
314
+ clientPermissions.set(
315
+ clientId,
316
+ data.permissions ?? {
317
+ allowFocusTracking: true,
318
+ allowTabClosing: true,
319
+ },
320
+ );
321
+
322
+ // Perform reconciliation to clean up ghosts before adding new entries
323
+ await reconcileTabs();
324
+
325
+ tabs.set(clientId, {
326
+ id: clientId,
327
+ url: data.url,
328
+ title: data.title,
329
+ isFocused: data.isFocused,
330
+ data: data.data ?? null, // Capturing the custom cache data
331
+ });
332
+
333
+ await layer.persist(); // Persist to IndexedDB
334
+ await broadcastUpdate();
335
+ },
336
+ );
337
+
338
+ // 2. Single Tab Closing
339
+ engine.onApi('tab:close_single', async (msg) => {
340
+ if (!msg.data || typeof msg.data.id !== 'string') {
341
+ return { closed: false, reason: 'Invalid message data or missing string ID.' };
342
+ }
343
+ const { id } = msg.data;
344
+
345
+ // Check if the client has authorized tab closing
346
+ const permissions = clientPermissions.get(id);
347
+ if (permissions && !permissions.allowTabClosing) {
348
+ return { closed: false, reason: 'Permission denied by client.' };
349
+ }
350
+
351
+ const client = await sw.clients.get(id);
352
+ if (client) {
353
+ const response = await engine.emitApi(client, 'tab:close');
354
+ return { closed: !!response?.authorized };
355
+ }
356
+ return { closed: false };
357
+ });
358
+
359
+ // 3. Multiple Tab Closing
360
+ engine.onApi('tab:close_multiple', async (msg) => {
361
+ if (!msg.data || !Array.isArray(msg.data.ids)) {
362
+ throw new TypeError('[TinyTabManagerPlugin] tab:close_multiple: ids must be an array.');
363
+ }
364
+ const { ids } = msg.data;
365
+ const results = [];
366
+
367
+ for (const id of ids) {
368
+ if (typeof id !== 'string') {
369
+ throw new TypeError(
370
+ '[TinyTabManagerPlugin] tab:close_multiple: invalid ID type in array.',
371
+ );
372
+ }
373
+
374
+ const permissions = clientPermissions.get(id);
375
+ if (permissions && !permissions.allowTabClosing) {
376
+ results.push(-1);
377
+ continue;
378
+ }
379
+
380
+ const client = await sw.clients.get(id);
381
+ if (client) {
382
+ const response = await engine.emitApi(client, 'tab:close');
383
+ results.push(!!response?.authorized ? 1 : 0);
384
+ } else {
385
+ results.push(0);
386
+ }
387
+ }
388
+ return { closed: results };
389
+ });
390
+
391
+ // 4. Close All Tabs
392
+ engine.onApi('tab:close_all', async () => {
393
+ const clients = await sw.clients.matchAll();
394
+ for (const client of clients) {
395
+ await engine.emitApi(client, 'tab:close');
396
+ }
397
+ });
398
+
399
+ // 5. Handle Tab Unregistration (When a tab is closed)
400
+ engine.onApi(
401
+ 'tab:unregister',
402
+ /**
403
+ * Processes unregistration messages to remove tabs from the registry.
404
+ */ async (msg) => {
405
+ const { clientId } = msg;
406
+
407
+ if (tabs.has(clientId)) {
408
+ tabs.delete(clientId);
409
+ await layer.persist(); // Persist to IndexedDB
410
+ await broadcastUpdate();
411
+ }
412
+
413
+ // Reconcile to ensure state consistency
414
+ await reconcileTabs();
415
+ },
416
+ );
417
+
418
+ // 6. Handle Request for current list (Manual polling)
419
+ engine.onApi(
420
+ 'tab:get_list',
421
+ /**
422
+ * Listens for requests to retrieve the current list of all registered tabs.
423
+ */ async () => {
424
+ // Ensure we are providing the most up-to-date list possible
425
+ await reconcileTabs();
426
+
427
+ // Reply directly to the source of the request
428
+ return { count: tabs.size, tabs: Array.from(tabs.values()) };
429
+ },
430
+ );
431
+
432
+ // 7. Handle Request for a specific tab
433
+ engine.onApi(
434
+ 'tab:get_tab',
435
+ /**
436
+ * Processes requests to retrieve information for a specific tab by its ID.
437
+ * @returns {Promise<TabInfo|undefined>} - The tab information or null if not found.
438
+ */ async (msg) => {
439
+ if (!msg.data) return;
440
+ const { id } = msg.data;
441
+ if (typeof id !== 'string') {
442
+ throw new TypeError('[TinyTabManagerPlugin] tab:get_tab: data must contain id (string).');
443
+ }
444
+
445
+ const tab = tabs.get(id);
446
+
447
+ // Return a copy to prevent direct mutation of the registry
448
+ return tab ? { ...tab } : undefined;
449
+ },
450
+ );
451
+ });
452
+
453
+ return layer;
454
+ };
455
+
456
+ exports.default = TinyTabManagerPlugin;
457
+ exports.sw = sw;
@@ -0,0 +1,91 @@
1
+ import TinyPromiseQueue from '../../../utils/TinyPromiseQueue.mjs';
2
+ import TinyServiceWorkerEngine from '../TinyServiceWorkerEngine.mjs';
3
+ /** @type {ServiceWorkerGlobalScope} */
4
+ export declare const sw: ServiceWorkerGlobalScope;
5
+ export type DebuggerConstructor = import('../../../tools/TinyDebugger.mjs').DebuggerConstructor;
6
+ export type TabInfo = {
7
+ /**
8
+ * - The unique Client ID provided by the browser.
9
+ */
10
+ id: string;
11
+ /**
12
+ * - The current URL of the tab.
13
+ */
14
+ url: string;
15
+ /**
16
+ * - The document title of the tab.
17
+ */
18
+ title: string;
19
+ /**
20
+ * - Whether the tab currently has window focus.
21
+ */
22
+ isFocused: boolean;
23
+ /**
24
+ * - Custom data provided by the client.
25
+ */
26
+ data?: any;
27
+ };
28
+ export type TabInstance = Map<string, TabInfo>;
29
+ /** @typedef {import('../../../tools/TinyDebugger.mjs').DebuggerConstructor} DebuggerConstructor - The constructor function for a debugger instance. */
30
+ /**
31
+ * Represents information about a single browser tab.
32
+ * @typedef {Object} TabInfo
33
+ * @property {string} id - The unique Client ID provided by the browser.
34
+ * @property {string} url - The current URL of the tab.
35
+ * @property {string} title - The document title of the tab.
36
+ * @property {boolean} isFocused - Whether the tab currently has window focus.
37
+ * @property {any} [data] - Custom data provided by the client.
38
+ */
39
+ /**
40
+ * A mapping of unique tab IDs to their corresponding TabInfo objects.
41
+ * @typedef {Map<string, TabInfo>} TabInstance
42
+ */
43
+ /**
44
+ * A layer within the TinyPlugin system specifically designed to manage and track tab instances.
45
+ */
46
+ declare class TinySwTabsLayer extends TinyServiceWorkerEngine.TinyPluginLayer {
47
+ #private;
48
+ /**
49
+ * Gets the internal promise queue instance.
50
+ * @returns {TinyPromiseQueue} - The instance of the promise queue.
51
+ */
52
+ get queue(): TinyPromiseQueue;
53
+ /**
54
+ * Synchronizes the current in-memory Map with the IndexedDB storage.
55
+ * @returns {Promise<void>}
56
+ */
57
+ persist(): Promise<void>;
58
+ /**
59
+ * Retrieves a snapshot of all tabs currently managed by the instance corresponding to the provided key.
60
+ * @param {number} key - The unique key of the instance to retrieve tabs from.
61
+ * @returns {Record<string, TabInfo>|null} - An object mapping tab IDs to their information, or null if the instance is not found.
62
+ */
63
+ static getTabsInstance(key: number): Record<string, TabInfo> | null;
64
+ /**
65
+ * Retrieves the information for a specific tab by its unique ID.
66
+ * @param {string} id - The unique identifier of the tab.
67
+ * @returns {TabInfo|null} - The tab information if found, or null if the tab does not exist.
68
+ * @throws {TypeError} If the provided id is not a string.
69
+ * @throws {ReferenceError} If the internal layer instance cannot be found in the registry.
70
+ */
71
+ getTab(id: string): TabInfo | null;
72
+ /**
73
+ * Initializes the layer, loads persisted data, and begins monitoring tab changes.
74
+ * @template {Parameters<TinySwTabsLayer['_startLayer']>[0]} Plugin - The TinyPlugin template.
75
+ * @param {Plugin} plugin - The TinyPlugin instance.
76
+ * @param {(tabs: TabInstance) => void} callback - The callback function to be executed with the current tabs upon initialization.
77
+ */
78
+ _start<Plugin extends Parameters<TinySwTabsLayer['_startLayer']>[0]>(plugin: Plugin, callback: (tabs: TabInstance) => void): this;
79
+ /**
80
+ * Initializes a new instance of the TinySwTabsLayer, assigning it a unique key and registering it in the static instances registry.
81
+ * @param {Partial<DebuggerConstructor>} [lgConfig] - Configuration options for the instance.
82
+ */
83
+ constructor(lgConfig?: Partial<DebuggerConstructor>);
84
+ }
85
+ /**
86
+ * A plugin for TinyServiceWorkerEngine that manages a centralized registry of all open website tabs.
87
+ * @type {import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<TinySwTabsLayer, 'TabManager', '1.0.0', [Partial<DebuggerConstructor>]|[]>} - The plugin installer for the Tab Manager.
88
+ */
89
+ declare const TinyTabManagerPlugin: import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<TinySwTabsLayer, 'TabManager', '1.0.0', [Partial<DebuggerConstructor>] | []>;
90
+ export default TinyTabManagerPlugin;
91
+ //# sourceMappingURL=TabManager.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabManager.d.mts","sourceRoot":"","sources":["../../../../../../../src/v1/libs/sw/service/plugins/TabManager.mjs"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,qCAAqC,CAAC;AACnE,OAAO,uBAAuB,MAAM,gCAAgC,CAAC;AAErE,uCAAuC;AAEvC,eAAO,MAAM,EAAE,EAFJ,wBAEW,CAAC;AAEnB,YAAyE,mBAAmB,GAAlF,OAAO,iCAAiC,EAAE,mBAAmB,CAA0E;AAIlJ,YAAkB,OAAO,GACzB;;;;IAAmB,EAAE,EAAV,MAAM,CACjB;;;;IAAmB,GAAG,EAAX,MAAM,CACjB;;;;IAAmB,KAAK,EAAb,MAAM,CACjB;;;;IAAoB,SAAS,EAAlB,OAAO,CAClB;;;;IAAiB,IAAI,AAArB,CACF,EADa,GAAG,CAChB;CAAA,CAAA;AAIE,YAAgC,WAAW,GAAjC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;AAd9C,uJAAuJ;AAEvJ;;;;;;;;GAQG;AAEH;;;GAGG;AAEH;;GAEG;AACH,cAAM,eAAgB,SAAQ,uBAAuB,CAAC,eAAe;;IAOnE;;;OAGG;IACH,IAAI,KAAK,IAFI,gBAAgB,CAI5B;IA4ED;;;OAGG;IACG,OAAO,IAFA,OAAO,CAAC,IAAI,CAAC,CAqBzB;IAED;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,EAHf,MAGe,GAFb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAC,IAAI,CAaxC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,EALE,MAKF,GAJI,OAAO,GAAC,IAAI,CAexB;IAED;;;;;OAKG;IACH,MAAM,CAJuD,MAAM,SAArD,UAAU,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAS,EAI5D,MAAM,EAHF,MAGE,EAAE,QAAQ,EAFZ,CAAC,IAAI,EAAE,WAAW,KAAK,IAEX,QAGtB;IAED;;;OAGG;IACH,YAAY,QAAQ,AAFjB,CACF,EADU,OAAO,CAAC,mBAAmB,CAEb,EAaxB;CACF;AAED;;;GAGG;AACH,QAAA,MAAM,oBAAoB,EAFhB,OAAO,gCAAgC,EAAE,iBAAiB,CAAC,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAC,EAAE,CA6O7I,CAAC;eAEa,oBAAoB"}