tiny-essentials 1.28.19 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/README.md +1 -1
  2. package/changelog/1/28/19.md +24 -0
  3. package/changelog/1/29/0.md +58 -0
  4. package/dist/v1/ColorSafeStringify.min.js +1 -1
  5. package/dist/v1/TinyAdvancedRaffle.min.js +1 -1
  6. package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
  7. package/dist/v1/TinyAnalogClock.min.js +1 -1
  8. package/dist/v1/TinyArrayComparator.min.js +1 -1
  9. package/dist/v1/TinyArrayPaginator.min.js +1 -1
  10. package/dist/v1/TinyBasicsEs.min.js +1 -1
  11. package/dist/v1/TinyBrowserMonitor.min.js +1 -0
  12. package/dist/v1/TinyClassManager.min.js +1 -1
  13. package/dist/v1/TinyClipboard.min.js +1 -1
  14. package/dist/v1/TinyCloner.min.js +1 -0
  15. package/dist/v1/TinyColorConverter.min.js +1 -1
  16. package/dist/v1/TinyColorValidator.min.js +1 -1
  17. package/dist/v1/TinyCookieConsent.min.js +1 -1
  18. package/dist/v1/TinyDayNightCycle.min.js +1 -1
  19. package/dist/v1/TinyDebugger.min.js +1 -1
  20. package/dist/v1/TinyDomReadyManager.min.js +1 -1
  21. package/dist/v1/TinyDragDropDetector.min.js +1 -1
  22. package/dist/v1/TinyDragger.min.js +1 -1
  23. package/dist/v1/TinyElementObserver.min.js +1 -1
  24. package/dist/v1/TinyEssentials.min.js +1 -1
  25. package/dist/v1/TinyGamepad.min.js +1 -1
  26. package/dist/v1/TinyHtml.min.js +1 -1
  27. package/dist/v1/TinyHtmlTagRegexBuilder.min.js +1 -0
  28. package/dist/v1/TinyHttpResponseRegistry.min.js +1 -0
  29. package/dist/v1/TinyI18.min.js +1 -1
  30. package/dist/v1/TinyIframeEvents.min.js +1 -1
  31. package/dist/v1/TinyInventory.min.js +1 -1
  32. package/dist/v1/TinyInventoryTrader.min.js +1 -1
  33. package/dist/v1/TinyLevelUp.min.js +1 -1
  34. package/dist/v1/TinyLoadingScreen.min.js +1 -1
  35. package/dist/v1/TinyLocalStorage.min.js +1 -1
  36. package/dist/v1/TinyMaInSys.min.js +1 -1
  37. package/dist/v1/TinyMapCache.min.js +1 -0
  38. package/dist/v1/TinyMediaPlayer.min.js +1 -1
  39. package/dist/v1/TinyNeedBar.min.js +1 -1
  40. package/dist/v1/TinyNewWinEvents.min.js +1 -1
  41. package/dist/v1/TinyNotificationAdapter.min.js +1 -0
  42. package/dist/v1/TinyNotifications.min.js +1 -1
  43. package/dist/v1/TinyNotifyCenter.min.js +1 -1
  44. package/dist/v1/TinyOPFSFileSystem.min.js +1 -0
  45. package/dist/v1/TinyPasswordValidator.min.js +1 -0
  46. package/dist/v1/TinyPluginPackage.min.js +1 -0
  47. package/dist/v1/TinyPromiseQueue.min.js +1 -1
  48. package/dist/v1/TinyPushManager.min.js +1 -0
  49. package/dist/v1/TinyPushPayload.min.js +1 -0
  50. package/dist/v1/TinyPushRouter.min.js +1 -0
  51. package/dist/v1/TinyRadioFm.min.js +1 -1
  52. package/dist/v1/TinyRateLimiter.min.js +1 -1
  53. package/dist/v1/TinyRegexEs.min.js +1 -0
  54. package/dist/v1/TinyRouter.min.js +1 -0
  55. package/dist/v1/TinyServiceWorker.min.js +1 -0
  56. package/dist/v1/TinyServiceWorkerEngine.min.js +1 -0
  57. package/dist/v1/TinySetMapPackage.min.js +1 -0
  58. package/dist/v1/TinySimpleDice.min.js +1 -1
  59. package/dist/v1/TinySmartScroller.min.js +1 -1
  60. package/dist/v1/TinyStorageBucketFileSystem.min.js +1 -0
  61. package/dist/v1/TinyTextDiffer.min.js +1 -1
  62. package/dist/v1/TinyTextRangeEditor.min.js +1 -1
  63. package/dist/v1/TinyTextarea.min.js +1 -1
  64. package/dist/v1/TinyThrottledApi.min.js +1 -0
  65. package/dist/v1/TinyTimeout.min.js +1 -1
  66. package/dist/v1/TinyToastNotify.min.js +1 -1
  67. package/dist/v1/TinyUploadClicker.min.js +1 -1
  68. package/dist/v1/TinyUriParser.min.js +1 -0
  69. package/dist/v1/TinyVersion.min.js +1 -0
  70. package/dist/v1/TinyWebWorker.min.js +1 -0
  71. package/dist/v1/TinyWebWorkerEngine.min.js +1 -0
  72. package/dist/v1/UltraRandomMsgGen.min.js +1 -1
  73. package/dist/v1/basics/array.cjs +2 -2
  74. package/dist/v1/basics/array.d.mts +2 -0
  75. package/dist/v1/basics/array.d.mts.map +1 -1
  76. package/dist/v1/basics/array.mjs +2 -1
  77. package/dist/v1/basics/browserDetector.cjs +37 -12
  78. package/dist/v1/basics/browserDetector.d.mts +8 -0
  79. package/dist/v1/basics/browserDetector.d.mts.map +1 -1
  80. package/dist/v1/basics/browserDetector.mjs +32 -13
  81. package/dist/v1/basics/crypto.cjs +23 -0
  82. package/dist/v1/basics/crypto.d.mts +10 -0
  83. package/dist/v1/basics/crypto.d.mts.map +1 -0
  84. package/dist/v1/basics/crypto.mjs +18 -0
  85. package/dist/v1/basics/html.cjs +0 -3
  86. package/dist/v1/basics/html.d.mts.map +1 -1
  87. package/dist/v1/basics/html.mjs +0 -2
  88. package/dist/v1/basics/index.cjs +8 -1
  89. package/dist/v1/basics/index.d.mts +6 -5
  90. package/dist/v1/basics/index.d.mts.map +1 -1
  91. package/dist/v1/basics/index.mjs +6 -5
  92. package/dist/v1/basics/objChecker.cjs +88 -0
  93. package/dist/v1/basics/objChecker.d.mts +26 -0
  94. package/dist/v1/basics/objChecker.d.mts.map +1 -1
  95. package/dist/v1/basics/objChecker.mjs +74 -0
  96. package/dist/v1/basics/objFilter.cjs +234 -93
  97. package/dist/v1/basics/objFilter.d.mts +96 -22
  98. package/dist/v1/basics/objFilter.d.mts.map +1 -1
  99. package/dist/v1/basics/objFilter.mjs +216 -92
  100. package/dist/v1/basics/promiseUtils.cjs +48 -12
  101. package/dist/v1/basics/promiseUtils.d.mts +45 -12
  102. package/dist/v1/basics/promiseUtils.d.mts.map +1 -1
  103. package/dist/v1/basics/promiseUtils.mjs +47 -12
  104. package/dist/v1/basics/text.cjs +0 -12
  105. package/dist/v1/basics/text.d.mts +0 -10
  106. package/dist/v1/basics/text.d.mts.map +1 -1
  107. package/dist/v1/basics/text.mjs +0 -10
  108. package/dist/v1/index.cjs +88 -3
  109. package/dist/v1/index.d.mts +31 -6
  110. package/dist/v1/index.d.mts.map +1 -1
  111. package/dist/v1/index.mjs +32 -7
  112. package/dist/v1/jsdoc/EventEmitter.cjs +4 -0
  113. package/dist/v1/jsdoc/EventEmitter.d.mts +33 -0
  114. package/dist/v1/jsdoc/EventEmitter.d.mts.map +1 -0
  115. package/dist/v1/jsdoc/EventEmitter.mjs +18 -0
  116. package/dist/v1/libs/array/TinyArrayComparator.cjs +240 -25
  117. package/dist/v1/libs/array/TinyArrayComparator.d.mts +130 -22
  118. package/dist/v1/libs/array/TinyArrayComparator.d.mts.map +1 -1
  119. package/dist/v1/libs/array/TinyArrayComparator.mjs +210 -24
  120. package/dist/v1/libs/fs/constants.cjs +74 -0
  121. package/dist/v1/libs/fs/constants.d.mts +22 -0
  122. package/dist/v1/libs/fs/constants.d.mts.map +1 -0
  123. package/dist/v1/libs/fs/constants.mjs +53 -0
  124. package/dist/v1/libs/fs/encoding.cjs +118 -0
  125. package/dist/v1/libs/fs/encoding.d.mts +50 -0
  126. package/dist/v1/libs/fs/encoding.d.mts.map +1 -0
  127. package/dist/v1/libs/fs/encoding.mjs +102 -0
  128. package/dist/v1/libs/fs/error.cjs +188 -0
  129. package/dist/v1/libs/fs/error.d.mts +105 -0
  130. package/dist/v1/libs/fs/error.d.mts.map +1 -0
  131. package/dist/v1/libs/fs/error.mjs +158 -0
  132. package/dist/v1/libs/fs/handle.cjs +121 -0
  133. package/dist/v1/libs/fs/handle.d.mts +56 -0
  134. package/dist/v1/libs/fs/handle.d.mts.map +1 -0
  135. package/dist/v1/libs/fs/handle.mjs +100 -0
  136. package/dist/v1/libs/fs/index.cjs +700 -0
  137. package/dist/v1/libs/fs/index.d.mts +377 -0
  138. package/dist/v1/libs/fs/index.d.mts.map +1 -0
  139. package/dist/v1/libs/fs/index.mjs +630 -0
  140. package/dist/v1/libs/fs/path.cjs +234 -0
  141. package/dist/v1/libs/fs/path.d.mts +176 -0
  142. package/dist/v1/libs/fs/path.d.mts.map +1 -0
  143. package/dist/v1/libs/fs/path.mjs +197 -0
  144. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.cjs +202 -0
  145. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts +121 -0
  146. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts.map +1 -0
  147. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.mjs +172 -0
  148. package/dist/v1/libs/fs/plugins/OPFS/index.cjs +334 -0
  149. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts +98 -0
  150. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts.map +1 -0
  151. package/dist/v1/libs/fs/plugins/OPFS/index.mjs +300 -0
  152. package/dist/v1/libs/fs/stats.cjs +245 -0
  153. package/dist/v1/libs/fs/stats.d.mts +226 -0
  154. package/dist/v1/libs/fs/stats.d.mts.map +1 -0
  155. package/dist/v1/libs/fs/stats.mjs +197 -0
  156. package/dist/v1/libs/html/events/TinyIframeEvents.cjs +10 -1
  157. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts +9 -2
  158. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts.map +1 -1
  159. package/dist/v1/libs/html/events/TinyIframeEvents.mjs +8 -1
  160. package/dist/v1/libs/html/events/TinyNewWinEvents.cjs +14 -3
  161. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts +21 -5
  162. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts.map +1 -1
  163. package/dist/v1/libs/html/events/TinyNewWinEvents.mjs +12 -3
  164. package/dist/v1/libs/html/scroll/TinySmartScroller.cjs +13 -1
  165. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts +29 -2
  166. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts.map +1 -1
  167. package/dist/v1/libs/html/scroll/TinySmartScroller.mjs +11 -1
  168. package/dist/v1/libs/math/TinyAdvancedRaffle.cjs +13 -1
  169. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts +32 -2
  170. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts.map +1 -1
  171. package/dist/v1/libs/math/TinyAdvancedRaffle.mjs +11 -1
  172. package/dist/v1/libs/math/TinyTimeout.cjs +0 -14
  173. package/dist/v1/libs/math/TinyTimeout.d.mts +0 -11
  174. package/dist/v1/libs/math/TinyTimeout.d.mts.map +1 -1
  175. package/dist/v1/libs/math/TinyTimeout.mjs +0 -13
  176. package/dist/v1/libs/media/TinyMediaPlayer/index.cjs +25 -1
  177. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts +35 -2
  178. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts.map +1 -1
  179. package/dist/v1/libs/media/TinyMediaPlayer/index.mjs +23 -1
  180. package/dist/v1/libs/media/TinyMediaPlayer.cjs +2 -2
  181. package/dist/v1/libs/media/TinyMediaPlayer.d.mts +2 -2
  182. package/dist/v1/libs/media/TinyMediaPlayer.d.mts.map +1 -1
  183. package/dist/v1/libs/media/TinyMediaPlayer.mjs +2 -2
  184. package/dist/v1/libs/media/TinyRadioFm.cjs +19 -1
  185. package/dist/v1/libs/media/TinyRadioFm.d.mts +78 -2
  186. package/dist/v1/libs/media/TinyRadioFm.d.mts.map +1 -1
  187. package/dist/v1/libs/media/TinyRadioFm.mjs +17 -1
  188. package/dist/v1/libs/plugin/TinyPlugin.cjs +1630 -0
  189. package/dist/v1/libs/plugin/TinyPlugin.d.mts +753 -0
  190. package/dist/v1/libs/plugin/TinyPlugin.d.mts.map +1 -0
  191. package/dist/v1/libs/plugin/TinyPlugin.mjs +1376 -0
  192. package/dist/v1/libs/plugin/TinyVersion.cjs +204 -0
  193. package/dist/v1/libs/plugin/TinyVersion.d.mts +70 -0
  194. package/dist/v1/libs/plugin/TinyVersion.d.mts.map +1 -0
  195. package/dist/v1/libs/plugin/TinyVersion.mjs +179 -0
  196. package/dist/v1/libs/router/TinyRouter.cjs +661 -0
  197. package/dist/v1/libs/router/TinyRouter.d.mts +320 -0
  198. package/dist/v1/libs/router/TinyRouter.d.mts.map +1 -0
  199. package/dist/v1/libs/router/TinyRouter.mjs +572 -0
  200. package/dist/v1/libs/storage/TinyLocalStorage.cjs +20 -1
  201. package/dist/v1/libs/storage/TinyLocalStorage.d.mts +64 -2
  202. package/dist/v1/libs/storage/TinyLocalStorage.d.mts.map +1 -1
  203. package/dist/v1/libs/storage/TinyLocalStorage.mjs +18 -1
  204. package/dist/v1/libs/storage/TinyMapCache.cjs +373 -0
  205. package/dist/v1/libs/storage/TinyMapCache.d.mts +274 -0
  206. package/dist/v1/libs/storage/TinyMapCache.d.mts.map +1 -0
  207. package/dist/v1/libs/storage/TinyMapCache.mjs +333 -0
  208. package/dist/v1/libs/storage/TinySetMapDatabase.cjs +1167 -0
  209. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts +603 -0
  210. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts.map +1 -0
  211. package/dist/v1/libs/storage/TinySetMapDatabase.mjs +1059 -0
  212. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.cjs +126 -0
  213. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts +132 -0
  214. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts.map +1 -0
  215. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.mjs +109 -0
  216. package/dist/v1/libs/sw/browser/TinyPushManager.cjs +310 -0
  217. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts +168 -0
  218. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts.map +1 -0
  219. package/dist/v1/libs/sw/browser/TinyPushManager.mjs +264 -0
  220. package/dist/v1/libs/sw/browser/TinyServiceWorker.cjs +1060 -0
  221. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts +348 -0
  222. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts.map +1 -0
  223. package/dist/v1/libs/sw/browser/TinyServiceWorker.mjs +933 -0
  224. package/dist/v1/libs/sw/browser/plugins/TabManager.cjs +315 -0
  225. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts +178 -0
  226. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts.map +1 -0
  227. package/dist/v1/libs/sw/browser/plugins/TabManager.mjs +274 -0
  228. package/dist/v1/libs/sw/browser/utils.cjs +28 -0
  229. package/dist/v1/libs/sw/browser/utils.d.mts +8 -0
  230. package/dist/v1/libs/sw/browser/utils.d.mts.map +1 -0
  231. package/dist/v1/libs/sw/browser/utils.mjs +21 -0
  232. package/dist/v1/libs/sw/service/TinyPushRouter.cjs +222 -0
  233. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts +138 -0
  234. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts.map +1 -0
  235. package/dist/v1/libs/sw/service/TinyPushRouter.mjs +201 -0
  236. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.cjs +3016 -0
  237. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts +993 -0
  238. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts.map +1 -0
  239. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.mjs +2558 -0
  240. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.cjs +88 -0
  241. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts +32 -0
  242. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts.map +1 -0
  243. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.mjs +69 -0
  244. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.cjs +112 -0
  245. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts +31 -0
  246. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts.map +1 -0
  247. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.mjs +91 -0
  248. package/dist/v1/libs/sw/service/plugins/Ping.cjs +32 -0
  249. package/dist/v1/libs/sw/service/plugins/Ping.d.mts +9 -0
  250. package/dist/v1/libs/sw/service/plugins/Ping.d.mts.map +1 -0
  251. package/dist/v1/libs/sw/service/plugins/Ping.mjs +25 -0
  252. package/dist/v1/libs/sw/service/plugins/TabManager.cjs +457 -0
  253. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts +91 -0
  254. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts.map +1 -0
  255. package/dist/v1/libs/sw/service/plugins/TabManager.mjs +372 -0
  256. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.cjs +180 -0
  257. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts +28 -0
  258. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts.map +1 -0
  259. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.mjs +148 -0
  260. package/dist/v1/libs/sw/service/shared/TinyPushPayload.cjs +199 -0
  261. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts +80 -0
  262. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts.map +1 -0
  263. package/dist/v1/libs/sw/service/shared/TinyPushPayload.mjs +174 -0
  264. package/dist/v1/libs/sw/utils.cjs +57 -0
  265. package/dist/v1/libs/sw/utils.d.mts +173 -0
  266. package/dist/v1/libs/sw/utils.d.mts.map +1 -0
  267. package/dist/v1/libs/sw/utils.mjs +50 -0
  268. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.cjs +57 -0
  269. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts +39 -0
  270. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts.map +1 -0
  271. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.mjs +48 -0
  272. package/dist/v1/libs/text/TinyI18/Browser.cjs +64 -0
  273. package/dist/v1/libs/text/TinyI18/Browser.d.mts +47 -0
  274. package/dist/v1/libs/text/TinyI18/Browser.d.mts.map +1 -0
  275. package/dist/v1/libs/text/TinyI18/Browser.mjs +57 -0
  276. package/dist/v1/libs/text/TinyI18/Node.cjs +49 -0
  277. package/dist/v1/libs/text/TinyI18/Node.d.mts +38 -0
  278. package/dist/v1/libs/text/TinyI18/Node.d.mts.map +1 -0
  279. package/dist/v1/libs/text/TinyI18/Node.mjs +43 -0
  280. package/dist/v1/libs/text/TinyI18/browser-utils.cjs +17 -0
  281. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts +8 -0
  282. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts.map +1 -0
  283. package/dist/v1/libs/text/TinyI18/browser-utils.mjs +13 -0
  284. package/dist/v1/libs/text/{TinyI18.cjs → TinyI18/index.cjs} +205 -104
  285. package/dist/v1/libs/text/{TinyI18.d.mts → TinyI18/index.d.mts} +141 -92
  286. package/dist/v1/libs/text/TinyI18/index.d.mts.map +1 -0
  287. package/dist/v1/libs/text/{TinyI18.mjs → TinyI18/index.mjs} +195 -101
  288. package/dist/v1/libs/tools/TinyBrowserMonitor.cjs +1088 -0
  289. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts +621 -0
  290. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts.map +1 -0
  291. package/dist/v1/libs/tools/TinyBrowserMonitor.mjs +940 -0
  292. package/dist/v1/libs/tools/TinyDebugger.cjs +180 -19
  293. package/dist/v1/libs/tools/TinyDebugger.d.mts +220 -24
  294. package/dist/v1/libs/tools/TinyDebugger.d.mts.map +1 -1
  295. package/dist/v1/libs/tools/TinyDebugger.mjs +161 -19
  296. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.cjs +256 -0
  297. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts +125 -0
  298. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts.map +1 -0
  299. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.mjs +223 -0
  300. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.cjs +23 -0
  301. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts +17 -0
  302. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts.map +1 -0
  303. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.mjs +19 -0
  304. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.cjs +23 -0
  305. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts +17 -0
  306. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts.map +1 -0
  307. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.mjs +19 -0
  308. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.cjs +390 -0
  309. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts +9 -0
  310. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts.map +1 -0
  311. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.mjs +387 -0
  312. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.cjs +2 -0
  313. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts +27 -0
  314. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts.map +1 -0
  315. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.mjs +12 -0
  316. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/LICENSE +53 -0
  317. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.cjs +405 -0
  318. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts +34 -0
  319. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts.map +1 -0
  320. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.mjs +342 -0
  321. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.cjs +23 -0
  322. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts +17 -0
  323. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts.map +1 -0
  324. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.mjs +19 -0
  325. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.cjs +327 -0
  326. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts +9 -0
  327. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts.map +1 -0
  328. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.mjs +324 -0
  329. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.cjs +268 -0
  330. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts +107 -0
  331. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts.map +1 -0
  332. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.mjs +238 -0
  333. package/dist/v1/libs/tools/TinyPasswordValidator.cjs +491 -0
  334. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts +246 -0
  335. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts.map +1 -0
  336. package/dist/v1/libs/tools/TinyPasswordValidator.mjs +434 -0
  337. package/dist/v1/libs/tools/TinyPkgExportValidator.cjs +48 -0
  338. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts +14 -0
  339. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts.map +1 -1
  340. package/dist/v1/libs/tools/TinyPkgExportValidator.mjs +44 -0
  341. package/dist/v1/libs/tools/TinySiteMap.cjs +1029 -0
  342. package/dist/v1/libs/tools/TinySiteMap.d.mts +429 -0
  343. package/dist/v1/libs/tools/TinySiteMap.d.mts.map +1 -0
  344. package/dist/v1/libs/tools/TinySiteMap.mjs +910 -0
  345. package/dist/v1/libs/tools/TinySiteMapStream.cjs +121 -0
  346. package/dist/v1/libs/tools/TinySiteMapStream.d.mts +51 -0
  347. package/dist/v1/libs/tools/TinySiteMapStream.d.mts.map +1 -0
  348. package/dist/v1/libs/tools/TinySiteMapStream.mjs +85 -0
  349. package/dist/v1/libs/tools/TinyURLSecurityVerifier.cjs +444 -0
  350. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts +217 -0
  351. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts.map +1 -0
  352. package/dist/v1/libs/tools/TinyURLSecurityVerifier.mjs +394 -0
  353. package/dist/v1/libs/tools/TinyUriParser/BlueSky.cjs +613 -0
  354. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts +152 -0
  355. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts.map +1 -0
  356. package/dist/v1/libs/tools/TinyUriParser/BlueSky.mjs +527 -0
  357. package/dist/v1/libs/tools/TinyUriParser/Discord.cjs +1119 -0
  358. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts +306 -0
  359. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts.map +1 -0
  360. package/dist/v1/libs/tools/TinyUriParser/Discord.mjs +968 -0
  361. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.cjs +469 -0
  362. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts +80 -0
  363. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts.map +1 -0
  364. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.mjs +379 -0
  365. package/dist/v1/libs/tools/TinyUriParser.cjs +217 -0
  366. package/dist/v1/libs/tools/TinyUriParser.d.mts +109 -0
  367. package/dist/v1/libs/tools/TinyUriParser.d.mts.map +1 -0
  368. package/dist/v1/libs/tools/TinyUriParser.mjs +183 -0
  369. package/dist/v1/libs/utils/TinyCloner.cjs +466 -0
  370. package/dist/v1/libs/utils/TinyCloner.d.mts +221 -0
  371. package/dist/v1/libs/utils/TinyCloner.d.mts.map +1 -0
  372. package/dist/v1/libs/utils/TinyCloner.mjs +416 -0
  373. package/dist/v1/libs/utils/TinyPromiseQueue.cjs +1 -1
  374. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts +2 -2
  375. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts.map +1 -1
  376. package/dist/v1/libs/utils/TinyPromiseQueue.mjs +1 -1
  377. package/dist/v1/libs/utils/TinyThrottledApi.cjs +333 -0
  378. package/dist/v1/libs/utils/TinyThrottledApi.d.mts +163 -0
  379. package/dist/v1/libs/utils/TinyThrottledApi.d.mts.map +1 -0
  380. package/dist/v1/libs/utils/TinyThrottledApi.mjs +294 -0
  381. package/dist/v1/libs/worker/browser/TinyWebWorker.cjs +342 -0
  382. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts +97 -0
  383. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts.map +1 -0
  384. package/dist/v1/libs/worker/browser/TinyWebWorker.mjs +305 -0
  385. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.cjs +346 -0
  386. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts +127 -0
  387. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts.map +1 -0
  388. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.mjs +304 -0
  389. package/dist/v1/regexp/Email.cjs +185 -0
  390. package/dist/v1/regexp/Email.d.mts +73 -0
  391. package/dist/v1/regexp/Email.d.mts.map +1 -0
  392. package/dist/v1/regexp/Email.mjs +153 -0
  393. package/dist/v1/regexp/Glob.cjs +293 -0
  394. package/dist/v1/regexp/Glob.d.mts +45 -0
  395. package/dist/v1/regexp/Glob.d.mts.map +1 -0
  396. package/dist/v1/regexp/Glob.mjs +260 -0
  397. package/dist/v1/regexp/Ipv4.cjs +57 -0
  398. package/dist/v1/regexp/Ipv4.d.mts +29 -0
  399. package/dist/v1/regexp/Ipv4.d.mts.map +1 -0
  400. package/dist/v1/regexp/Ipv4.mjs +45 -0
  401. package/dist/v1/regexp/Ipv6.cjs +67 -0
  402. package/dist/v1/regexp/Ipv6.d.mts +29 -0
  403. package/dist/v1/regexp/Ipv6.d.mts.map +1 -0
  404. package/dist/v1/regexp/Ipv6.mjs +54 -0
  405. package/dist/v1/regexp/SegmentExtractor.cjs +145 -0
  406. package/dist/v1/regexp/SegmentExtractor.d.mts +91 -0
  407. package/dist/v1/regexp/SegmentExtractor.d.mts.map +1 -0
  408. package/dist/v1/regexp/SegmentExtractor.mjs +116 -0
  409. package/dist/v1/regexp/UrlDetector.cjs +125 -0
  410. package/dist/v1/regexp/UrlDetector.d.mts +67 -0
  411. package/dist/v1/regexp/UrlDetector.d.mts.map +1 -0
  412. package/dist/v1/regexp/UrlDetector.mjs +102 -0
  413. package/dist/v1/regexp/Username/index.cjs +233 -0
  414. package/dist/v1/regexp/Username/index.d.mts +77 -0
  415. package/dist/v1/regexp/Username/index.d.mts.map +1 -0
  416. package/dist/v1/regexp/Username/index.mjs +199 -0
  417. package/dist/v1/regexp/Username/jsDoc.cjs +2 -0
  418. package/dist/v1/regexp/Username/jsDoc.d.mts +57 -0
  419. package/dist/v1/regexp/Username/jsDoc.d.mts.map +1 -0
  420. package/dist/v1/regexp/Username/jsDoc.mjs +18 -0
  421. package/dist/v1/regexp/Username/templates/BlueSky.cjs +56 -0
  422. package/dist/v1/regexp/Username/templates/BlueSky.d.mts +35 -0
  423. package/dist/v1/regexp/Username/templates/BlueSky.d.mts.map +1 -0
  424. package/dist/v1/regexp/Username/templates/BlueSky.mjs +52 -0
  425. package/dist/v1/regexp/Username/templates/Discord.cjs +505 -0
  426. package/dist/v1/regexp/Username/templates/Discord.d.mts +209 -0
  427. package/dist/v1/regexp/Username/templates/Discord.d.mts.map +1 -0
  428. package/dist/v1/regexp/Username/templates/Discord.mjs +458 -0
  429. package/dist/v1/regexp/Username/templates/MatrixProtocol.cjs +143 -0
  430. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts +70 -0
  431. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts.map +1 -0
  432. package/dist/v1/regexp/Username/templates/MatrixProtocol.mjs +128 -0
  433. package/dist/v1/regexp/Username/templates/deprecated/Discord.cjs +24 -0
  434. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts +17 -0
  435. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts.map +1 -0
  436. package/dist/v1/regexp/Username/templates/deprecated/Discord.mjs +20 -0
  437. package/dist/v1/regexp/Username/templates/index.cjs +11 -0
  438. package/dist/v1/regexp/Username/templates/index.d.mts +5 -0
  439. package/dist/v1/regexp/Username/templates/index.d.mts.map +1 -0
  440. package/dist/v1/regexp/Username/templates/index.mjs +4 -0
  441. package/dist/v1/regexp/index.cjs +41 -0
  442. package/dist/v1/regexp/index.d.mts +9 -0
  443. package/dist/v1/regexp/index.d.mts.map +1 -0
  444. package/dist/v1/regexp/index.mjs +8 -0
  445. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.cjs +64 -0
  446. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts +11 -0
  447. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts.map +1 -0
  448. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.mjs +51 -0
  449. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.cjs +66 -0
  450. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts +11 -0
  451. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts.map +1 -0
  452. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.mjs +51 -0
  453. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.cjs +39 -0
  454. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts +11 -0
  455. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts.map +1 -0
  456. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.mjs +28 -0
  457. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.cjs +494 -0
  458. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts +142 -0
  459. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts.map +1 -0
  460. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.mjs +445 -0
  461. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.cjs +30 -4
  462. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts +5 -2
  463. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts.map +1 -1
  464. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs +29 -5
  465. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.cjs +135 -0
  466. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts +83 -0
  467. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts.map +1 -0
  468. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.mjs +120 -0
  469. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.cjs +127 -0
  470. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts +95 -0
  471. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts.map +1 -0
  472. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.mjs +109 -0
  473. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.cjs +83 -0
  474. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts +46 -0
  475. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts.map +1 -0
  476. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.mjs +71 -0
  477. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.cjs +493 -0
  478. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts +67 -0
  479. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts.map +1 -0
  480. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.mjs +399 -0
  481. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.cjs +35 -0
  482. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts +6 -0
  483. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts.map +1 -0
  484. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.mjs +29 -0
  485. package/docs/info/RegExp.md +74 -0
  486. package/docs/v1/Exports.md +101 -0
  487. package/docs/v1/README.md +113 -15
  488. package/docs/v1/basics/asyncReplace.md +2 -0
  489. package/docs/v1/basics/browserDetector.md +28 -11
  490. package/docs/v1/basics/crypto.md +85 -0
  491. package/docs/v1/basics/deprecated/html.md +2 -0
  492. package/docs/v1/basics/deprecated/objFilter.md +2 -0
  493. package/docs/v1/basics/html.md +2 -0
  494. package/docs/v1/basics/objChecker.md +55 -0
  495. package/docs/v1/basics/objFilter.md +57 -86
  496. package/docs/v1/basics/promiseUtils.md +12 -3
  497. package/docs/v1/basics/text.md +0 -1
  498. package/docs/v1/libs/array/TinyArrayComparator.md +50 -39
  499. package/docs/v1/libs/fs/TinyFS.md +752 -0
  500. package/docs/v1/libs/fs/TinyOPFSFileSystem.md +495 -0
  501. package/docs/v1/libs/fs/TinyStorageBucketFileSystem.md +407 -0
  502. package/docs/v1/libs/plugin/TinyPlugin.md +441 -0
  503. package/docs/v1/libs/plugin/TinyVersion.md +145 -0
  504. package/docs/v1/libs/router/TinyRouter.md +216 -0
  505. package/docs/v1/libs/storage/TinyMapCache.md +219 -0
  506. package/docs/v1/libs/storage/TinySetMapDatabase.md +478 -0
  507. package/docs/v1/libs/sw/browser/TinyNotificationAdapter.md +280 -0
  508. package/docs/v1/libs/sw/browser/TinyPushManager.md +782 -0
  509. package/docs/v1/libs/sw/browser/TinyServiceWorker.md +365 -0
  510. package/docs/v1/libs/sw/browser/plugins/TabManager.md +133 -0
  511. package/docs/v1/libs/sw/service/TinyPushRouter.md +314 -0
  512. package/docs/v1/libs/sw/service/TinyServiceWorkerEngine.md +748 -0
  513. package/docs/v1/libs/sw/service/plugins/GlobBypassPlugin.md +229 -0
  514. package/docs/v1/libs/sw/service/plugins/GlobCachePlugin.md +91 -0
  515. package/docs/v1/libs/sw/service/plugins/Ping.md +36 -0
  516. package/docs/v1/libs/sw/service/plugins/TabManager.md +64 -0
  517. package/docs/v1/libs/sw/service/plugins/ViteFileDetector.md +92 -0
  518. package/docs/v1/libs/sw/service/shared/TinyPushPayload.md +316 -0
  519. package/docs/v1/libs/text/TinyI18.md +80 -56
  520. package/docs/v1/libs/tools/TinyBrowserMonitor.md +170 -0
  521. package/docs/v1/libs/tools/TinyDebugger.md +117 -1
  522. package/docs/v1/libs/tools/TinyHtmlTagRegexBuilder.md +141 -0
  523. package/docs/v1/libs/tools/TinyHttpResponseRegistry.md +129 -0
  524. package/docs/v1/libs/tools/TinyPasswordValidator.md +153 -0
  525. package/docs/v1/libs/tools/TinyPkgExportValidator.md +45 -1
  526. package/docs/v1/libs/tools/TinySiteMap.md +134 -0
  527. package/docs/v1/libs/tools/TinySiteMapStream.md +97 -0
  528. package/docs/v1/libs/tools/TinyURLSecurityVerifier.md +146 -0
  529. package/docs/v1/libs/tools/TinyUriParser/Discord.md +374 -0
  530. package/docs/v1/libs/tools/TinyUriParser/MatrixProtocol.md +54 -0
  531. package/docs/v1/libs/tools/TinyUriParser.md +128 -0
  532. package/docs/v1/libs/utils/TinyCloner.md +126 -0
  533. package/docs/v1/libs/utils/TinyPromiseQueue.md +1 -1
  534. package/docs/v1/libs/utils/TinyThrottledApi.md +219 -0
  535. package/docs/v1/libs/worker/browser/TinyWebWorker.md +331 -0
  536. package/docs/v1/libs/worker/engine/TinyWebWorkerEngine.md +137 -0
  537. package/docs/v1/regexp/Email.md +127 -0
  538. package/docs/v1/regexp/Glob.md +155 -0
  539. package/docs/v1/regexp/IPv4.md +103 -0
  540. package/docs/v1/regexp/IPv6.md +122 -0
  541. package/docs/v1/regexp/SegmentExtractor.md +120 -0
  542. package/docs/v1/regexp/UrlDetector.md +117 -0
  543. package/docs/v1/regexp/Username/Base.md +131 -0
  544. package/docs/v1/regexp/Username/Discord.md +267 -0
  545. package/docs/v1/regexp/Username/MatrixProtocol.md +131 -0
  546. package/docs/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters.md +569 -0
  547. package/docs/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.md +19 -7
  548. package/docs/v1/webTemplates/media/MediaValidator/v1/Browser.md +123 -0
  549. package/docs/v1/webTemplates/media/MediaValidator/v1/Node.md +136 -0
  550. package/docs/v1/webTemplates/multiformats/14.0/IPFSHasher.md +310 -0
  551. package/docs/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.md +131 -0
  552. package/docs/v1/webTemplates/vite/7.3/plugins/githubUtils.md +50 -0
  553. package/package.json +303 -13
  554. package/types/EventEmitter.d.ts +48 -0
  555. package/dist/v1/libs/text/TinyI18.d.mts.map +0 -1
@@ -0,0 +1,170 @@
1
+ # 🌐 TinyBrowserMonitor Documentation
2
+
3
+ Welcome to the **TinyBrowserMonitor** documentation! 🚀 This lightweight, high-performance utility is designed to give developers real-time insights into a user's network environment and device performance.
4
+
5
+ Whether you are building a progressive web app (PWA) that needs to react to offline status, a data-heavy dashboard that needs to adjust quality based on bandwidth, or a high-performance application requiring deep web vitals tracking, `TinyBrowserMonitor` has you covered.
6
+
7
+ ---
8
+
9
+ ## 🌟 Overview
10
+
11
+ `TinyBrowserMonitor` is an event-driven monitor that tracks several critical pillars of environment health:
12
+ 1. **Connectivity Status:** Are we online or offline? 📶
13
+ 2. **Connection Quality:** Bandwidth, Latency, Connection Type, and API availability. ⚡
14
+ 3. **Battery Status:** Charge level and charging state. 🔋
15
+ 4. **Device Metrics:** Hardware constraints like device memory. 💻
16
+ 5. **Resource Performance:** Loading duration of assets (images, scripts, etc.). ⏱️
17
+ 6. **Web Vitals & Performance:** Deep insights into Paint timing, Navigation, Layout Shift (CLS), LCP, and Long Tasks. 🚀
18
+
19
+ ---
20
+
21
+ ## 📦 Getting Started
22
+
23
+ ### Installation & Import
24
+ Since this module uses ES6 syntax, ensure your environment supports `import`.
25
+
26
+ ```javascript
27
+ import TinyBrowserMonitor from 'tiny-essentials/libs/tools/TinyBrowserMonitor';
28
+ ```
29
+
30
+ ### Initialization
31
+ ```javascript
32
+ /**
33
+ * @param {MonitorOptions} [options={}] - Configuration options.
34
+ * @param {number} [options.resourceLimit=1000] - Maximum number of resource metrics to store. Use -1 for infinite.
35
+ * @param {SystemValue[]} [options.systems] - List of systems to enable. If empty, all are enabled.
36
+ * @param {number} [options.memoryIntervalMs=100] - Interval in milliseconds for memory polling.
37
+ * @param {number} [options.fpsIntervalMs=1000] - Interval in miliseconds for fps polling.
38
+ */
39
+ const monitor = new TinyBrowserMonitor(options);
40
+ ```
41
+
42
+ ---
43
+
44
+ ## 🛠️ Core Features
45
+
46
+ ### 1. Real-time Connectivity Tracking
47
+ Automatically detects when a user loses or regains internet access.
48
+
49
+ ### 2. Network Quality Metrics
50
+ Leverages the **Network Information API** to provide:
51
+ * `downlink`: Effective bandwidth in Mbps.
52
+ * `rtt`: Estimated round-trip time (latency).
53
+ * `effectiveType`: The connection type (e.g., '4g', '3g').
54
+ * `saveData`: Detects if the user has "Data Saver" mode enabled.
55
+ * `enabled`: Indicates if the Network Information API is supported.
56
+
57
+ ### 3. Battery & Device Monitoring
58
+ * **Battery:** Tracks `level`, `charging` state, and time to full/empty.
59
+ * **Device:** Provides approximate `memory` (GB) via the Device Memory API.
60
+
61
+ ### 4. Comprehensive Performance & Web Vitals
62
+ Uses the `PerformanceObserver` API to track:
63
+ * **Resource Loading:** Detailed metrics for every fetched asset.
64
+ * **Paint Timing:** `first-paint` and `first-contentful-paint`.
65
+ * **Navigation Timing:** `ttfb`, `domContentLoaded`, and `loadEvent`.
66
+ * **Core Web Vitals:** `layoutShift` (CLS) and `lcp` (Largest Contentful Paint).
67
+ * **Responsiveness:** Tracks `longTasks` to monitor main thread blockage.
68
+
69
+ ---
70
+
71
+ ## 📖 Usage Guide
72
+
73
+ ### 📡 Method 1: The Event-Driven Approach (Recommended)
74
+ Since `TinyBrowserMonitor` extends `EventEmitter`, you can listen for specific events.
75
+
76
+ #### Global Updates
77
+ Listen for any change in the monitored systems. The payload contains a comprehensive `NetworkEvent` report.
78
+ ```javascript
79
+ monitor.on('NetworkUpdated', (data) => {
80
+ console.log('📊 Full Report:', data);
81
+ if (data.event) console.log('Triggered by event:', data.event.type);
82
+ });
83
+ ```
84
+
85
+ #### Specific System Events
86
+ You can listen to granular updates to optimize performance:
87
+
88
+ * **Connectivity:** `monitor.on('ConnectivityUpdated', (status) => ...)`
89
+ * **Battery:** `monitor.on('BatteryUpdated', (battery) => ...)`
90
+ * **Memory:** `monitor.on('MemoryUsage', (memory) => ...)`
91
+ * **FPS:** `monitor.on('FPS', (fps) => ...)`
92
+ * **Window Resize:** `monitor.on('WindowResize', (metrics) => ...)`
93
+
94
+ #### Performance & Web Vitals Events
95
+ * **Paint:** `monitor.on('PaintUpdated', (paint) => ...)`
96
+ * **Navigation:** `monitor.on('NavigationUpdated', (nav) => ...)`
97
+ * **Layout Shift:** `monitor.on('LayoutShiftUpdated', ({ layoutShift }) => ...)`
98
+ * **LCP:** `monitor.on('LcpUpdated', ({ lcp }) => ...)`
99
+ * **Long Tasks:** `monitor.on('LongTaskUpdated', ({ lcp }) => ...)`
100
+ > *Note: The payload contains an array of task durations under the `lcp` key.*
101
+
102
+ #### Resource Lifecycle Events
103
+ Emitted when the resource history changes:
104
+ * `ResourceAdded`: Emitted when a new resource is tracked. `(oldItem, newItem)`
105
+ * `ResourceDeleted`: Emitted when an old resource is removed (FIFO). `(oldItem, newItem)`
106
+ * `ResourceEdited`: Emitted if resource data is updated. `(oldItem, newItem)`
107
+
108
+ #### Lifecycle
109
+ * **Destroyed:** Emitted when the monitor is cleaned up. `monitor.on('Destroyed', () => ...)`
110
+
111
+ ---
112
+
113
+ ### 📸 Method 2: Snapshot Access & Helpers
114
+ Check metrics at any specific moment without waiting for an event.
115
+
116
+ #### Snapshot Getters
117
+ All getters return **read-only (frozen)** objects to ensure data integrity.
118
+ ```javascript
119
+ const connectivity = monitor.connectivity;
120
+ const quality = monitor.quality;
121
+ const resources = monitor.resources;
122
+ const battery = monitor.battery;
123
+ const device = monitor.device;
124
+ const performance = monitor.performance;
125
+ const memoryUsage = monitor.memoryUsage;
126
+ const windowMetrics = monitor.windowMetrics;
127
+ const screenMetrics = monitor.screenMetrics;
128
+ const fps = monitor.fps;
129
+ ```
130
+
131
+ #### Utility Methods
132
+ ```javascript
133
+ // Check how many systems are currently active
134
+ console.log(monitor.size);
135
+
136
+ // Check if a specific system is enabled
137
+ if (monitor.has('battery')) { ... }
138
+
139
+ // Get human-readable memory (e.g., '1.5 GB')
140
+ const memory = monitor.getFormattedMemoryUsage('GB');
141
+ // Returns: { used: 1.5, total: 8, limit: 16 }
142
+ ```
143
+
144
+ ---
145
+
146
+ ## 🧹 Cleanup & Memory Management
147
+
148
+ To prevent **memory leaks**, especially in Single Page Applications (SPAs), you **must** call the `destroy()` method when the component or page is unmounted.
149
+
150
+ ```javascript
151
+ // Cleanup
152
+ monitor.destroy();
153
+
154
+ // Listen for destruction
155
+ monitor.on('Destroyed', () => console.log('Monitor cleaned up.'));
156
+ ```
157
+
158
+ **What `destroy()` does:**
159
+ * ✅ Removes `online`/`offline` window listeners.
160
+ * ✅ Removes `connection` change listeners.
161
+ * ✅ Disconnects all `PerformanceObserver` instances.
162
+ * ✅ Clears all internal event emitters.
163
+ * ✅ Sets `isDestroyed` to `true`.
164
+
165
+ ---
166
+
167
+ ## ⚠️ Important Notes
168
+
169
+ * **Immutability:** All returned reports are read-only. Attempting to change properties directly will fail.
170
+ * **Resource Limit:** If a `resourceLimit` is set, the monitor uses FIFO (First-In, First-Out) logic to remove the oldest entries.
@@ -13,6 +13,7 @@ const debuggerInstance = new TinyDebugger({
13
13
  logger: console, // You can use standard console or a custom object
14
14
  id: 'APP_CORE',
15
15
  debugMode: true,
16
+ autoHideId: false,
16
17
  canEmitLogs: true,
17
18
  useLogColors: true
18
19
  });
@@ -28,7 +29,8 @@ When creating a new instance via the `constructor`, you can pass a configuration
28
29
 
29
30
  | Property | Type | Required | Default | Description |
30
31
  | :--- | :--- | :--- | :--- | :--- |
31
- | `logger` | `Object` | **Yes** | N/A | An object implementing the `Console` interface. |
32
+ | `logger` | `Partial<Console>` | **Yes** | N/A | An object implementing the `Console` interface. |
33
+ | `autoHideId` | `boolean` | No | `false` | Whether to hide the instance id whenever a sub id is set. |
32
34
  | `id` | `string` | **Yes** | N/A | A unique identifier for this debugger instance. |
33
35
  | `debugMode` | `boolean` | **Yes** | N/A | If `false`, all logging methods will return immediately. |
34
36
  | `canEmitLogs` | `boolean` | No | `false` | If `true`, the instance will emit events for every log action. |
@@ -53,6 +55,22 @@ If `canEmitLogs` is set to `true`, `TinyDebugger` acts as an `EventEmitter`, all
53
55
 
54
56
  ---
55
57
 
58
+ ## 🧩 Instance Properties
59
+
60
+ These properties are accessed directly on the instance (not as methods).
61
+
62
+ | Property | Type | Access | Description |
63
+ | :--- | :--- | :--- | :--- |
64
+ | `logId` | `string` | read-only | The instance debug id. |
65
+ | `logSubId` | `string` | read / write | A sub-identifier. **Can only be assigned once.** Reading it before assignment throws an `Error`. |
66
+ | `debugMode` | `boolean` | read / write | Enables or disables all logging. |
67
+ | `canEmitLogs` | `boolean` | read-only | Whether event emission is enabled. |
68
+ | `useLogColors` | `boolean` | read / write | Enables or disables ANSI colors. |
69
+
70
+ > ⚠️ **Note:** Setting `debugMode` or `useLogColors` emits the `setDebugMode` event.
71
+
72
+ ---
73
+
56
74
  ## 📖 API Reference
57
75
 
58
76
  ### `log(logType, message, ...args)`
@@ -101,6 +119,21 @@ You can dynamically modify the behavior of your debugger instance using these in
101
119
  | `_removeLogColor(id)` | Removes a color shortcut. |
102
120
  | `_addLogPrefix(id, text)` | Adds a new prefix shortcut (e.g., `:status:`). |
103
121
  | `_removeLogPrefix(id)` | Removes a prefix shortcut. |
122
+ | `_applyLogFormatting(text)` | Applies all prefix and color replacements to a string and returns the result. |
123
+
124
+ ### Default Colors
125
+
126
+ `black`, `red`, `green`, `yellow`, `blue`, `magenta`, `cyan`, `white`, `gray`.
127
+
128
+ ### Default Prefixes
129
+
130
+ | Shortcut | Output |
131
+ | :--- | :--- |
132
+ | `:log:` | `[_log_LOG_reset_]` |
133
+ | `:info:` | `[_info_INFO_reset_]` |
134
+ | `:warn:` | `[_warn_WARN_reset_]` |
135
+ | `:error:` | `[_error_ERROR_reset_]` |
136
+ | `:debug:` | `[_debug_DEBUG_reset_]` |
104
137
 
105
138
  ### Example: Adding a Custom Color
106
139
  ```javascript
@@ -110,6 +143,89 @@ debuggerInstance.log('info', 'This message is _gold_!');
110
143
 
111
144
  ---
112
145
 
146
+ ## 🎨 Color Convention
147
+
148
+ `TinyDebugger` follows a visual convention for color usage. Following it keeps logs predictable: a reader can identify the role of each element by its color alone, without reading the full message.
149
+
150
+ | Color | Applies to | Meaning |
151
+ | :--- | :--- | :--- |
152
+ | 🔵 Blue | Main class | The **primary class** of the current context. |
153
+ | 🟢 Green | Sub-class | A **sub-class** that belongs to something connected to the main class. |
154
+
155
+ ### How to read it
156
+
157
+ * **Blue = the main class.** This is the entry point of the context you are looking at.
158
+ * **Green = the sub-class.** This is a class that is connected to (owned by, instantiated by, or dependent on) the main class. It is not the entry point itself.
159
+
160
+ ### Example
161
+
162
+ ```javascript
163
+ // The main class is blue, the sub-class is green.
164
+ debugger.log('info', '[_main_class_Server_reset_] started [_sub_class_Router_reset_]');
165
+ ```
166
+
167
+ In the example above:
168
+
169
+ * `[Server]` is the **main class** (blue).
170
+ * `[Router]` is a **sub-class** connected to `Server` (green).
171
+
172
+ > 💡 **Tip:** Use `_addLogColor(id, code)` to register these shortcuts once and reuse them across your project instead of repeating raw ANSI codes.
173
+
174
+ ---
175
+
176
+ ## 📡 Events
177
+
178
+ When `canEmitLogs` is `true`, the instance emits the following events:
179
+
180
+ | Event | Payload | Emitted when |
181
+ | :--- | :--- | :--- |
182
+ | `setDebugMode` | `boolean` | `debugMode` or `useLogColors` is changed. |
183
+ | `debug:log` | `(prefix, message, ...args)` | `log()` is called. |
184
+ | `debug:clear` | — | `logClear()` is called. |
185
+ | `debug:groupEnd` | — | `logGroupEnd()` is called. |
186
+ | `debug:logLabel` | `(logType, label)` | `logLabel()` is called. |
187
+ | `debug:timeLog` | `(label, ...args)` | `logTimeLabel()` is called. |
188
+ | `debug:assert` | `(condition, ...args)` | `logAssert()` is called. |
189
+ | `debug:dir` | `(item, options)` | `logDir()` is called. |
190
+ | `debug:table` | `(tabularData, properties)` | `logTable()` is called. |
191
+
192
+ ---
193
+
194
+ ## 🖥️ Console Facade
195
+
196
+ The `toConsole()` method returns a `console`-compatible object. Every call is
197
+ routed through the instance's logging methods, so formatting, debug mode, and
198
+ event emission keep working automatically.
199
+
200
+ ```javascript
201
+ const debug = new TinyDebugger({
202
+ logger: console,
203
+ id: 'APP_CORE',
204
+ debugMode: true,
205
+ });
206
+
207
+ const log = debug.toConsole();
208
+
209
+ log.log('Hello, %s!', 'world'); // Routed through debug.log('log', ...)
210
+ log.warn('Careful!');
211
+ log.table([{ a: 1 }, { a: 2 }]);
212
+ ```
213
+
214
+ ### Supported methods
215
+
216
+ | Group | Methods |
217
+ | :--- | :--- |
218
+ | Standard | `log`, `info`, `warn`, `error`, `debug` |
219
+ | Grouping | `group`, `groupCollapsed`, `groupEnd` |
220
+ | Inspection | `dir`, `dirxml`, `table`, `trace` |
221
+ | Assertion | `assert` |
222
+ | Timers | `time`, `timeEnd`, `timeLog`, `timeStamp` |
223
+ | Counters | `count`, `countReset` |
224
+ | Profiler | `profile`, `profileEnd` |
225
+ | Utility | `clear` |
226
+
227
+ ---
228
+
113
229
  ## ⚠️ Error Handling
114
230
 
115
231
  It will throw `TypeError` if:
@@ -0,0 +1,141 @@
1
+ # 🛠️ TinyHtmlTagRegexBuilder
2
+
3
+ Welcome to the official documentation for `TinyHtmlTagRegexBuilder`. This utility is designed to make parsing specific HTML tags using Regular Expressions much more structured, predictable, and easy to manage in your daily development workflow.
4
+
5
+ ## 📝 Overview
6
+
7
+ Parsing HTML with Regular Expressions can be complex and error-prone. The `TinyHtmlTagRegexBuilder` solves this by providing a high-level configuration interface to build specialized Regex patterns.
8
+
9
+ Instead of writing long, confusing regex strings manually, you define the **rules** (the tag name, the attributes you want, and how to handle content), and this class generates the engine for you.
10
+
11
+ ---
12
+
13
+ ## 🚀 Getting Started
14
+
15
+ Since this project uses ES6 modules, you can import it into your JavaScript files like this:
16
+
17
+ ```javascript
18
+ import TinyHtmlTagRegexBuilder from 'tiny-essentials/libs/tools/TinyHtmlTagRegexBuilder';
19
+ ```
20
+
21
+ ---
22
+
23
+ ## ⚙️ Configuration Guide
24
+
25
+ When you create a new instance using `new TinyHtmlTagRegexBuilder(config)`, you must provide a configuration object. Here is a breakdown of every property available:
26
+
27
+ | Property | Type | Required | Default | Description |
28
+ | :--- | :--- | :--- | :--- | :--- |
29
+ | `tagName` | `string` | **Yes** | N/A | The name of the HTML tag you want to target (e.g., `'a'`, `'img'`, `'div'`). |
30
+ | `attributes` | `string[]` | No | `[]` | An array of specific attribute names you want to extract individually. |
31
+ | `captureAllAttributes` | `boolean` | **Yes** | N/A | Determines if you want to grab *every* attribute or only the ones listed in `attributes`. |
32
+ | `freeMode` | `boolean` | No | `false` | If `true`, the regex will match content even if it spans multiple lines. |
33
+ | `contentPattern` | `string` | No | `'[\s\S]*?'` | A custom regex pattern to define what constitutes the "inner content" of the tag. |
34
+
35
+ ---
36
+
37
+ ## 🛠️ Usage Modes
38
+
39
+ This is the most important part of the tool. You must choose one of two "modes" based on your goal.
40
+
41
+ ### 🎯 Mode 1: The "Precision Sniper" (Specific Attributes)
42
+ **Use this when:** You only care about a few specific attributes (like `href` in an `<a>` tag or `src` in an `<img>` tag) and want to ignore everything else.
43
+
44
+ * **Requirement:** `captureAllAttributes` must be `false`.
45
+ * **How it works:** It uses "Lookaheads" to find exactly the attributes you requested in the `attributes` array.
46
+
47
+ ### 📦 Mode 2: The "Grab Everything" (All Attributes)
48
+ **Use this when:** You don't know which attributes will be present, but you want to capture every single one of them.
49
+
50
+ * **Requirement:** `captureAllAttributes` must be `true`.
51
+ * **How it works:** It captures the entire attribute string and then uses an internal parser to turn it into a clean JavaScript object.
52
+
53
+ ---
54
+
55
+ ## 🧪 Practical Examples
56
+
57
+ Here are two real-world scenarios to help you implement this in your projects.
58
+
59
+ ### Example 1: Extracting Links (`<a>` tags) 🔗
60
+ In this example, we only care about the `href` attribute.
61
+
62
+ ```javascript
63
+ const linkBuilder = new TinyHtmlTagRegexBuilder({
64
+ tagName: 'a',
65
+ attributes: ['href'],
66
+ captureAllAttributes: false
67
+ });
68
+
69
+ const html = '<a href="https://google.com" class="link">Click Me</a>';
70
+ const results = linkBuilder.parse(html);
71
+
72
+ console.log(results);
73
+ /*
74
+ Output:
75
+ [{
76
+ attributes: { href: 'https://google.com' },
77
+ child: 'Click Me'
78
+ }]
79
+ */
80
+ ```
81
+
82
+ ### Example 2: Extracting All Attributes and Multi-line Content 📄
83
+ In this example, we want everything inside a `div`, including newlines, and we want all attributes.
84
+
85
+ ```javascript
86
+ const divBuilder = new TinyHtmlTagRegexBuilder({
87
+ tagName: 'div',
88
+ captureAllAttributes: true,
89
+ freeMode: true
90
+ });
91
+
92
+ const html = `
93
+ <div id="main" class="container" data-role="wrapper">
94
+ <h1>Hello World</h1>
95
+ </div>`;
96
+
97
+ const results = divBuilder.parse(html);
98
+
99
+ console.log(results);
100
+ /*
101
+ Output:
102
+ [{
103
+ attributes: {
104
+ id: 'main',
105
+ class: 'container',
106
+ 'data-role': 'wrapper'
107
+ },
108
+ child: '\n <h1>Hello World</h1>\n'
109
+ }]
110
+ */
111
+ ```
112
+
113
+ ---
114
+
115
+ ## 📖 API Reference
116
+
117
+ ### `constructor(config)`
118
+ Initializes the builder.
119
+ * **Throws:** `TypeError` if `tagName` is not a string, if it contains invalid characters (`<`, `>`, or spaces), or if `captureAllAttributes` is not a boolean.
120
+
121
+ ### `toRegExp(flag = 'g')`
122
+ Returns the compiled `RegExp` object.
123
+ * **Parameter:** `flag` (string) - Standard regex flags (default is `'g'`).
124
+
125
+ ### `parse(htmlString)`
126
+ The primary method. It executes the regex against your string and returns an array of objects.
127
+ * **Returns:** `ParsedHtmlTag[]` (An array of objects containing `attributes` and `child`).
128
+
129
+ ### `toString()`
130
+ Returns the raw regex string used for matching. Useful for debugging!
131
+
132
+ ---
133
+
134
+ ## ⚠️ Error Handling
135
+
136
+ To ensure your code is robust, this class implements **Strict Runtime Validation**. If you pass the wrong data type, the code will "fail fast" by throwing a `TypeError`.
137
+
138
+ **Common Errors to Watch For:**
139
+ 1. `TypeError: The tagName must be a single word...` — You tried to use a tag like `<div >` (with a space) or `<p>`.
140
+ 2. `TypeError: captureAllAttributes must be a boolean.` — You forgot to define this required property.
141
+ 3. `TypeError: freeMode must be a boolean.` — You provided a string or number instead of `true`/`false`.
@@ -0,0 +1,129 @@
1
+ # 📦 Tiny HTTP Response Registry
2
+
3
+ A robust, immutable, and internationalized registry for managing HTTP status codes. This module ensures that your application's HTTP response data (names, summaries, and descriptions) remains consistent, validated, and ready for multi-language support.
4
+
5
+ ## 🌟 Overview
6
+
7
+ In large-scale applications, managing HTTP error messages manually can lead to bugs (e.g., typos in "Not Found") and difficulty when translating the app into other languages.
8
+
9
+ `TinyHttpResponseRegistry` solves this by:
10
+ 1. **Centralizing** all HTTP response data.
11
+ 2. **Enforcing strict types** to prevent invalid data from entering your system.
12
+ 3. **Supporting Localization (i18n)** so you can serve "Not Found" in English and "Não Encontrado" in Portuguese using the same ID.
13
+
14
+ ---
15
+
16
+ ## 🚀 Key Features
17
+
18
+ * **🔒 Immutability:** Uses `structuredClone` and private fields (`#`) to ensure that once a response is registered, it cannot be accidentally changed by other parts of the program.
19
+ * **🌍 Internationalization (i18n):** Deeply integrated with `TinyI18` to allow seamless language switching.
20
+ * **💎 Data Integrity:** Uses a "Static Default" system to provide base responses that are shared across all instances of the registry.
21
+
22
+ ---
23
+
24
+ ## 📖 API Reference
25
+
26
+ ### `constructor(initialResponses)`
27
+ Initializes the registry.
28
+ * **Parameters:** `initialResponses` (Optional `HttpResponses` object).
29
+ * **Throws:** `TypeError` if `initialResponses` is not a valid object.
30
+
31
+ ### `addResponse(id, response, locale)`
32
+ Registers a new HTTP status code.
33
+ * **Parameters:**
34
+ * `id` (`number`): The HTTP code (e.g., `404`).
35
+ * `response` (`HttpResponse`): An object containing `{ name, summary, description }`.
36
+ * `locale` (`string`, optional): The language for this specific entry.
37
+ * **Throws:**
38
+ * `TypeError`: If the response object is missing required properties or has wrong types.
39
+ * `Error`: If the ID is already registered.
40
+
41
+ ### `get(id, params, locale)`
42
+ Retrieves the data for a specific code.
43
+ * **Parameters:**
44
+ * `id` (`number`): The HTTP code to search for.
45
+ * `params` (`Object`, optional): Variables for string replacement in translations.
46
+ * `locale` (`string`, optional): The language to retrieve.
47
+ * **Returns:** `HttpResponse | null` (The object containing `name`, `summary`, and `description`, or `null` if not found).
48
+
49
+ ### `has(id)`
50
+ Checks if a code exists.
51
+ * **Returns:** `boolean`.
52
+
53
+ ### `getAll()`
54
+ Returns every registered response in the current instance.
55
+ * **Returns:** `HttpResponses` object.
56
+
57
+ ---
58
+
59
+ ## 💡 Practical Examples
60
+
61
+ ### 1. Basic Usage 🛠️
62
+ Standard setup and retrieval of a default code.
63
+
64
+ ```javascript
65
+ import TinyHttpResponseRegistry from 'tiny-essentials/libs/tools/TinyHttpResponseRegistry';
66
+
67
+ const registry = new TinyHttpResponseRegistry();
68
+
69
+ // Check if 404 exists
70
+ console.log(registry.has(404)); // true
71
+
72
+ // Get data
73
+ const error404 = registry.get(404);
74
+ console.log(error404.name); // "Not Found"
75
+ ```
76
+
77
+ ### 2. Adding Custom Responses & Localization 🌍
78
+ How to add your own codes and support multiple languages.
79
+
80
+ ```javascript
81
+ const registry = new TinyHttpResponseRegistry();
82
+
83
+ // Adding a custom error in English
84
+ registry.addResponse(501, {
85
+ name: 'Not Implemented',
86
+ summary: 'Service not implemented',
87
+ description: 'The server does not support the functionality required to fulfill the request.'
88
+ }, 'en');
89
+
90
+ // Adding the same error in Portuguese
91
+ registry.addResponse(501, {
92
+ name: 'Não Implementado',
93
+ summary: 'Serviço não implementado',
94
+ description: 'O servidor não suporta a funcionalidade necessária.'
95
+ }, 'pt');
96
+
97
+ // Retrieving based on locale
98
+ console.log(registry.get(501, {}, 'en').name); // "Not Implemented"
99
+ console.log(registry.get(501, {}, 'pt').name); // "Não Implementado"
100
+ ```
101
+
102
+ ### 3. Error Handling ⚠️
103
+ The registry is designed to fail loudly if you make a mistake, which is better than failing silently in production.
104
+
105
+ ```javascript
106
+ const registry = new TinyHttpResponseRegistry();
107
+
108
+ try {
109
+ // Error: 'summary' is missing
110
+ registry.addResponse(418, {
111
+ name: 'I am a teapot',
112
+ description: 'I refuse to brew coffee'
113
+ });
114
+ } catch (error) {
115
+ console.error(error.message);
116
+ // Output: "Property 'summary' in status 418 must be a string."
117
+ }
118
+ ```
119
+
120
+ ---
121
+
122
+ ## 🛠️ Daily Workflow Integration
123
+
124
+ When working on a project using this module, follow these steps:
125
+
126
+ 1. **Initialization:** Create a single instance of `TinyHttpResponseRegistry` at the start of your application lifecycle (e.g., in an `app.js` or `container.js` file).
127
+ 2. **Registration Phase:** During the application startup, use `addResponse` to load all your custom business-logic error codes.
128
+ 3. **Usage Phase:** In your Controllers or Middleware, use `registry.get(code)` to fetch the correct message to send back to the client.
129
+ 4. **Localization:** Always pass the user's preferred language (detected from the `Accept-Language` header) into the `.get()` method.