tiny-essentials 1.28.18 → 1.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/changelog/1/28/19.md +24 -0
- package/changelog/1/29/0.md +58 -0
- package/dist/v1/ColorSafeStringify.min.js +1 -1
- package/dist/v1/TinyAdvancedRaffle.min.js +1 -1
- package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
- package/dist/v1/TinyAnalogClock.min.js +1 -1
- package/dist/v1/TinyArrayComparator.min.js +1 -1
- package/dist/v1/TinyArrayPaginator.min.js +1 -1
- package/dist/v1/TinyBasicsEs.min.js +1 -1
- package/dist/v1/TinyBrowserMonitor.min.js +1 -0
- package/dist/v1/TinyClassManager.min.js +1 -1
- package/dist/v1/TinyClipboard.min.js +1 -1
- package/dist/v1/TinyCloner.min.js +1 -0
- package/dist/v1/TinyColorConverter.min.js +1 -1
- package/dist/v1/TinyColorValidator.min.js +1 -1
- package/dist/v1/TinyCookieConsent.min.js +1 -1
- package/dist/v1/TinyDayNightCycle.min.js +1 -1
- package/dist/v1/TinyDebugger.min.js +1 -1
- package/dist/v1/TinyDomReadyManager.min.js +1 -1
- package/dist/v1/TinyDragDropDetector.min.js +1 -1
- package/dist/v1/TinyDragger.min.js +1 -1
- package/dist/v1/TinyElementObserver.min.js +1 -1
- package/dist/v1/TinyEssentials.min.js +1 -1
- package/dist/v1/TinyGamepad.min.js +1 -1
- package/dist/v1/TinyHtml.min.js +1 -1
- package/dist/v1/TinyHtmlTagRegexBuilder.min.js +1 -0
- package/dist/v1/TinyHttpResponseRegistry.min.js +1 -0
- package/dist/v1/TinyI18.min.js +1 -1
- package/dist/v1/TinyIframeEvents.min.js +1 -1
- package/dist/v1/TinyInventory.min.js +1 -1
- package/dist/v1/TinyInventoryTrader.min.js +1 -1
- package/dist/v1/TinyLevelUp.min.js +1 -1
- package/dist/v1/TinyLoadingScreen.min.js +1 -1
- package/dist/v1/TinyLocalStorage.min.js +1 -1
- package/dist/v1/TinyMaInSys.min.js +1 -1
- package/dist/v1/TinyMapCache.min.js +1 -0
- package/dist/v1/TinyMediaPlayer.min.js +1 -1
- package/dist/v1/TinyNeedBar.min.js +1 -1
- package/dist/v1/TinyNewWinEvents.min.js +1 -1
- package/dist/v1/TinyNotificationAdapter.min.js +1 -0
- package/dist/v1/TinyNotifications.min.js +1 -1
- package/dist/v1/TinyNotifyCenter.min.js +1 -1
- package/dist/v1/TinyOPFSFileSystem.min.js +1 -0
- package/dist/v1/TinyPasswordValidator.min.js +1 -0
- package/dist/v1/TinyPluginPackage.min.js +1 -0
- package/dist/v1/TinyPromiseQueue.min.js +1 -1
- package/dist/v1/TinyPushManager.min.js +1 -0
- package/dist/v1/TinyPushPayload.min.js +1 -0
- package/dist/v1/TinyPushRouter.min.js +1 -0
- package/dist/v1/TinyRadioFm.min.js +1 -1
- package/dist/v1/TinyRateLimiter.min.js +1 -1
- package/dist/v1/TinyRegexEs.min.js +1 -0
- package/dist/v1/TinyRouter.min.js +1 -0
- package/dist/v1/TinyServiceWorker.min.js +1 -0
- package/dist/v1/TinyServiceWorkerEngine.min.js +1 -0
- package/dist/v1/TinySetMapPackage.min.js +1 -0
- package/dist/v1/TinySimpleDice.min.js +1 -1
- package/dist/v1/TinySmartScroller.min.js +1 -1
- package/dist/v1/TinyStorageBucketFileSystem.min.js +1 -0
- package/dist/v1/TinyTextDiffer.min.js +1 -1
- package/dist/v1/TinyTextRangeEditor.min.js +1 -1
- package/dist/v1/TinyTextarea.min.js +1 -1
- package/dist/v1/TinyThrottledApi.min.js +1 -0
- package/dist/v1/TinyTimeout.min.js +1 -1
- package/dist/v1/TinyToastNotify.min.js +1 -1
- package/dist/v1/TinyUploadClicker.min.js +1 -1
- package/dist/v1/TinyUriParser.min.js +1 -0
- package/dist/v1/TinyVersion.min.js +1 -0
- package/dist/v1/TinyWebWorker.min.js +1 -0
- package/dist/v1/TinyWebWorkerEngine.min.js +1 -0
- package/dist/v1/UltraRandomMsgGen.min.js +1 -1
- package/dist/v1/basics/array.cjs +2 -2
- package/dist/v1/basics/array.d.mts +2 -0
- package/dist/v1/basics/array.d.mts.map +1 -1
- package/dist/v1/basics/array.mjs +2 -1
- package/dist/v1/basics/browserDetector.cjs +37 -12
- package/dist/v1/basics/browserDetector.d.mts +8 -0
- package/dist/v1/basics/browserDetector.d.mts.map +1 -1
- package/dist/v1/basics/browserDetector.mjs +32 -13
- package/dist/v1/basics/crypto.cjs +23 -0
- package/dist/v1/basics/crypto.d.mts +10 -0
- package/dist/v1/basics/crypto.d.mts.map +1 -0
- package/dist/v1/basics/crypto.mjs +18 -0
- package/dist/v1/basics/html.cjs +0 -3
- package/dist/v1/basics/html.d.mts.map +1 -1
- package/dist/v1/basics/html.mjs +0 -2
- package/dist/v1/basics/index.cjs +8 -1
- package/dist/v1/basics/index.d.mts +6 -5
- package/dist/v1/basics/index.d.mts.map +1 -1
- package/dist/v1/basics/index.mjs +6 -5
- package/dist/v1/basics/objChecker.cjs +88 -0
- package/dist/v1/basics/objChecker.d.mts +26 -0
- package/dist/v1/basics/objChecker.d.mts.map +1 -1
- package/dist/v1/basics/objChecker.mjs +74 -0
- package/dist/v1/basics/objFilter.cjs +234 -93
- package/dist/v1/basics/objFilter.d.mts +96 -22
- package/dist/v1/basics/objFilter.d.mts.map +1 -1
- package/dist/v1/basics/objFilter.mjs +216 -92
- package/dist/v1/basics/promiseUtils.cjs +48 -12
- package/dist/v1/basics/promiseUtils.d.mts +45 -12
- package/dist/v1/basics/promiseUtils.d.mts.map +1 -1
- package/dist/v1/basics/promiseUtils.mjs +47 -12
- package/dist/v1/basics/text.cjs +0 -12
- package/dist/v1/basics/text.d.mts +0 -10
- package/dist/v1/basics/text.d.mts.map +1 -1
- package/dist/v1/basics/text.mjs +0 -10
- package/dist/v1/css/TinyCookieConsent.min.css +1 -0
- package/dist/v1/css/TinyCookieConsent.min.css.map +1 -0
- package/dist/v1/css/TinyDraggerExample.min.css +1 -0
- package/dist/v1/css/TinyDraggerExample.min.css.map +1 -0
- package/dist/v1/css/TinyLoadingScreen.min.css +1 -0
- package/dist/v1/css/TinyLoadingScreen.min.css.map +1 -0
- package/dist/v1/css/TinyNotify.min.css +1 -0
- package/dist/v1/css/TinyNotify.min.css.map +1 -0
- package/dist/v1/css/aiMarker.min.css +1 -0
- package/dist/v1/css/aiMarker.min.css.map +1 -0
- package/dist/v1/index.cjs +88 -3
- package/dist/v1/index.d.mts +31 -6
- package/dist/v1/index.d.mts.map +1 -1
- package/dist/v1/index.mjs +32 -7
- package/dist/v1/jsdoc/EventEmitter.cjs +4 -0
- package/dist/v1/jsdoc/EventEmitter.d.mts +33 -0
- package/dist/v1/jsdoc/EventEmitter.d.mts.map +1 -0
- package/dist/v1/jsdoc/EventEmitter.mjs +18 -0
- package/dist/v1/libs/array/TinyArrayComparator.cjs +240 -25
- package/dist/v1/libs/array/TinyArrayComparator.d.mts +130 -22
- package/dist/v1/libs/array/TinyArrayComparator.d.mts.map +1 -1
- package/dist/v1/libs/array/TinyArrayComparator.mjs +210 -24
- package/dist/v1/libs/fs/constants.cjs +74 -0
- package/dist/v1/libs/fs/constants.d.mts +22 -0
- package/dist/v1/libs/fs/constants.d.mts.map +1 -0
- package/dist/v1/libs/fs/constants.mjs +53 -0
- package/dist/v1/libs/fs/encoding.cjs +118 -0
- package/dist/v1/libs/fs/encoding.d.mts +50 -0
- package/dist/v1/libs/fs/encoding.d.mts.map +1 -0
- package/dist/v1/libs/fs/encoding.mjs +102 -0
- package/dist/v1/libs/fs/error.cjs +188 -0
- package/dist/v1/libs/fs/error.d.mts +105 -0
- package/dist/v1/libs/fs/error.d.mts.map +1 -0
- package/dist/v1/libs/fs/error.mjs +158 -0
- package/dist/v1/libs/fs/handle.cjs +121 -0
- package/dist/v1/libs/fs/handle.d.mts +56 -0
- package/dist/v1/libs/fs/handle.d.mts.map +1 -0
- package/dist/v1/libs/fs/handle.mjs +100 -0
- package/dist/v1/libs/fs/index.cjs +700 -0
- package/dist/v1/libs/fs/index.d.mts +377 -0
- package/dist/v1/libs/fs/index.d.mts.map +1 -0
- package/dist/v1/libs/fs/index.mjs +630 -0
- package/dist/v1/libs/fs/path.cjs +234 -0
- package/dist/v1/libs/fs/path.d.mts +176 -0
- package/dist/v1/libs/fs/path.d.mts.map +1 -0
- package/dist/v1/libs/fs/path.mjs +197 -0
- package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.cjs +202 -0
- package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts +121 -0
- package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts.map +1 -0
- package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.mjs +172 -0
- package/dist/v1/libs/fs/plugins/OPFS/index.cjs +334 -0
- package/dist/v1/libs/fs/plugins/OPFS/index.d.mts +98 -0
- package/dist/v1/libs/fs/plugins/OPFS/index.d.mts.map +1 -0
- package/dist/v1/libs/fs/plugins/OPFS/index.mjs +300 -0
- package/dist/v1/libs/fs/stats.cjs +245 -0
- package/dist/v1/libs/fs/stats.d.mts +226 -0
- package/dist/v1/libs/fs/stats.d.mts.map +1 -0
- package/dist/v1/libs/fs/stats.mjs +197 -0
- package/dist/v1/libs/html/events/TinyIframeEvents.cjs +10 -1
- package/dist/v1/libs/html/events/TinyIframeEvents.d.mts +9 -2
- package/dist/v1/libs/html/events/TinyIframeEvents.d.mts.map +1 -1
- package/dist/v1/libs/html/events/TinyIframeEvents.mjs +8 -1
- package/dist/v1/libs/html/events/TinyNewWinEvents.cjs +14 -3
- package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts +21 -5
- package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts.map +1 -1
- package/dist/v1/libs/html/events/TinyNewWinEvents.mjs +12 -3
- package/dist/v1/libs/html/scroll/TinySmartScroller.cjs +13 -1
- package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts +29 -2
- package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts.map +1 -1
- package/dist/v1/libs/html/scroll/TinySmartScroller.mjs +11 -1
- package/dist/v1/libs/math/TinyAdvancedRaffle.cjs +13 -1
- package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts +32 -2
- package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts.map +1 -1
- package/dist/v1/libs/math/TinyAdvancedRaffle.mjs +11 -1
- package/dist/v1/libs/math/TinyTimeout.cjs +0 -14
- package/dist/v1/libs/math/TinyTimeout.d.mts +0 -11
- package/dist/v1/libs/math/TinyTimeout.d.mts.map +1 -1
- package/dist/v1/libs/math/TinyTimeout.mjs +0 -13
- package/dist/v1/libs/media/TinyMediaPlayer/index.cjs +25 -1
- package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts +35 -2
- package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts.map +1 -1
- package/dist/v1/libs/media/TinyMediaPlayer/index.mjs +23 -1
- package/dist/v1/libs/media/TinyMediaPlayer.cjs +2 -2
- package/dist/v1/libs/media/TinyMediaPlayer.d.mts +2 -2
- package/dist/v1/libs/media/TinyMediaPlayer.d.mts.map +1 -1
- package/dist/v1/libs/media/TinyMediaPlayer.mjs +2 -2
- package/dist/v1/libs/media/TinyRadioFm.cjs +19 -1
- package/dist/v1/libs/media/TinyRadioFm.d.mts +78 -2
- package/dist/v1/libs/media/TinyRadioFm.d.mts.map +1 -1
- package/dist/v1/libs/media/TinyRadioFm.mjs +17 -1
- package/dist/v1/libs/plugin/TinyPlugin.cjs +1630 -0
- package/dist/v1/libs/plugin/TinyPlugin.d.mts +753 -0
- package/dist/v1/libs/plugin/TinyPlugin.d.mts.map +1 -0
- package/dist/v1/libs/plugin/TinyPlugin.mjs +1376 -0
- package/dist/v1/libs/plugin/TinyVersion.cjs +204 -0
- package/dist/v1/libs/plugin/TinyVersion.d.mts +70 -0
- package/dist/v1/libs/plugin/TinyVersion.d.mts.map +1 -0
- package/dist/v1/libs/plugin/TinyVersion.mjs +179 -0
- package/dist/v1/libs/router/TinyRouter.cjs +661 -0
- package/dist/v1/libs/router/TinyRouter.d.mts +320 -0
- package/dist/v1/libs/router/TinyRouter.d.mts.map +1 -0
- package/dist/v1/libs/router/TinyRouter.mjs +572 -0
- package/dist/v1/libs/storage/TinyLocalStorage.cjs +20 -1
- package/dist/v1/libs/storage/TinyLocalStorage.d.mts +64 -2
- package/dist/v1/libs/storage/TinyLocalStorage.d.mts.map +1 -1
- package/dist/v1/libs/storage/TinyLocalStorage.mjs +18 -1
- package/dist/v1/libs/storage/TinyMapCache.cjs +373 -0
- package/dist/v1/libs/storage/TinyMapCache.d.mts +274 -0
- package/dist/v1/libs/storage/TinyMapCache.d.mts.map +1 -0
- package/dist/v1/libs/storage/TinyMapCache.mjs +333 -0
- package/dist/v1/libs/storage/TinySetMapDatabase.cjs +1167 -0
- package/dist/v1/libs/storage/TinySetMapDatabase.d.mts +603 -0
- package/dist/v1/libs/storage/TinySetMapDatabase.d.mts.map +1 -0
- package/dist/v1/libs/storage/TinySetMapDatabase.mjs +1059 -0
- package/dist/v1/libs/sw/browser/TinyNotificationAdapter.cjs +126 -0
- package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts +132 -0
- package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts.map +1 -0
- package/dist/v1/libs/sw/browser/TinyNotificationAdapter.mjs +109 -0
- package/dist/v1/libs/sw/browser/TinyPushManager.cjs +310 -0
- package/dist/v1/libs/sw/browser/TinyPushManager.d.mts +168 -0
- package/dist/v1/libs/sw/browser/TinyPushManager.d.mts.map +1 -0
- package/dist/v1/libs/sw/browser/TinyPushManager.mjs +264 -0
- package/dist/v1/libs/sw/browser/TinyServiceWorker.cjs +1060 -0
- package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts +348 -0
- package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts.map +1 -0
- package/dist/v1/libs/sw/browser/TinyServiceWorker.mjs +933 -0
- package/dist/v1/libs/sw/browser/plugins/TabManager.cjs +315 -0
- package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts +178 -0
- package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts.map +1 -0
- package/dist/v1/libs/sw/browser/plugins/TabManager.mjs +274 -0
- package/dist/v1/libs/sw/browser/utils.cjs +28 -0
- package/dist/v1/libs/sw/browser/utils.d.mts +8 -0
- package/dist/v1/libs/sw/browser/utils.d.mts.map +1 -0
- package/dist/v1/libs/sw/browser/utils.mjs +21 -0
- package/dist/v1/libs/sw/service/TinyPushRouter.cjs +222 -0
- package/dist/v1/libs/sw/service/TinyPushRouter.d.mts +138 -0
- package/dist/v1/libs/sw/service/TinyPushRouter.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/TinyPushRouter.mjs +201 -0
- package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.cjs +3016 -0
- package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts +993 -0
- package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.mjs +2558 -0
- package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.cjs +88 -0
- package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts +32 -0
- package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.mjs +69 -0
- package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.cjs +112 -0
- package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts +31 -0
- package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.mjs +91 -0
- package/dist/v1/libs/sw/service/plugins/Ping.cjs +32 -0
- package/dist/v1/libs/sw/service/plugins/Ping.d.mts +9 -0
- package/dist/v1/libs/sw/service/plugins/Ping.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/plugins/Ping.mjs +25 -0
- package/dist/v1/libs/sw/service/plugins/TabManager.cjs +457 -0
- package/dist/v1/libs/sw/service/plugins/TabManager.d.mts +91 -0
- package/dist/v1/libs/sw/service/plugins/TabManager.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/plugins/TabManager.mjs +372 -0
- package/dist/v1/libs/sw/service/plugins/ViteFileDetector.cjs +180 -0
- package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts +28 -0
- package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/plugins/ViteFileDetector.mjs +148 -0
- package/dist/v1/libs/sw/service/shared/TinyPushPayload.cjs +199 -0
- package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts +80 -0
- package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/shared/TinyPushPayload.mjs +174 -0
- package/dist/v1/libs/sw/utils.cjs +57 -0
- package/dist/v1/libs/sw/utils.d.mts +173 -0
- package/dist/v1/libs/sw/utils.d.mts.map +1 -0
- package/dist/v1/libs/sw/utils.mjs +50 -0
- package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.cjs +57 -0
- package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts +39 -0
- package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts.map +1 -0
- package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.mjs +48 -0
- package/dist/v1/libs/text/TinyI18/Browser.cjs +64 -0
- package/dist/v1/libs/text/TinyI18/Browser.d.mts +47 -0
- package/dist/v1/libs/text/TinyI18/Browser.d.mts.map +1 -0
- package/dist/v1/libs/text/TinyI18/Browser.mjs +57 -0
- package/dist/v1/libs/text/TinyI18/Node.cjs +49 -0
- package/dist/v1/libs/text/TinyI18/Node.d.mts +38 -0
- package/dist/v1/libs/text/TinyI18/Node.d.mts.map +1 -0
- package/dist/v1/libs/text/TinyI18/Node.mjs +43 -0
- package/dist/v1/libs/text/TinyI18/browser-utils.cjs +17 -0
- package/dist/v1/libs/text/TinyI18/browser-utils.d.mts +8 -0
- package/dist/v1/libs/text/TinyI18/browser-utils.d.mts.map +1 -0
- package/dist/v1/libs/text/TinyI18/browser-utils.mjs +13 -0
- package/dist/v1/libs/text/{TinyI18.cjs → TinyI18/index.cjs} +205 -104
- package/dist/v1/libs/text/{TinyI18.d.mts → TinyI18/index.d.mts} +141 -92
- package/dist/v1/libs/text/TinyI18/index.d.mts.map +1 -0
- package/dist/v1/libs/text/{TinyI18.mjs → TinyI18/index.mjs} +195 -101
- package/dist/v1/libs/tools/TinyBrowserMonitor.cjs +1088 -0
- package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts +621 -0
- package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyBrowserMonitor.mjs +940 -0
- package/dist/v1/libs/tools/TinyDebugger.cjs +180 -19
- package/dist/v1/libs/tools/TinyDebugger.d.mts +220 -24
- package/dist/v1/libs/tools/TinyDebugger.d.mts.map +1 -1
- package/dist/v1/libs/tools/TinyDebugger.mjs +161 -19
- package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.cjs +256 -0
- package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts +125 -0
- package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.mjs +223 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.cjs +23 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts +17 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.mjs +19 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.cjs +23 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts +17 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.mjs +19 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.cjs +390 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts +9 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.mjs +387 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.cjs +2 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts +27 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.mjs +12 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/LICENSE +53 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.cjs +405 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts +34 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.mjs +342 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.cjs +23 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts +17 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.mjs +19 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.cjs +327 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts +9 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.mjs +324 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.cjs +268 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts +107 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.mjs +238 -0
- package/dist/v1/libs/tools/TinyPasswordValidator.cjs +491 -0
- package/dist/v1/libs/tools/TinyPasswordValidator.d.mts +246 -0
- package/dist/v1/libs/tools/TinyPasswordValidator.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyPasswordValidator.mjs +434 -0
- package/dist/v1/libs/tools/TinyPkgExportValidator.cjs +48 -0
- package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts +14 -0
- package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts.map +1 -1
- package/dist/v1/libs/tools/TinyPkgExportValidator.mjs +44 -0
- package/dist/v1/libs/tools/TinySiteMap.cjs +1029 -0
- package/dist/v1/libs/tools/TinySiteMap.d.mts +429 -0
- package/dist/v1/libs/tools/TinySiteMap.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinySiteMap.mjs +910 -0
- package/dist/v1/libs/tools/TinySiteMapStream.cjs +121 -0
- package/dist/v1/libs/tools/TinySiteMapStream.d.mts +51 -0
- package/dist/v1/libs/tools/TinySiteMapStream.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinySiteMapStream.mjs +85 -0
- package/dist/v1/libs/tools/TinyURLSecurityVerifier.cjs +444 -0
- package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts +217 -0
- package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyURLSecurityVerifier.mjs +394 -0
- package/dist/v1/libs/tools/TinyUriParser/BlueSky.cjs +613 -0
- package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts +152 -0
- package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyUriParser/BlueSky.mjs +527 -0
- package/dist/v1/libs/tools/TinyUriParser/Discord.cjs +1119 -0
- package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts +306 -0
- package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyUriParser/Discord.mjs +968 -0
- package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.cjs +469 -0
- package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts +80 -0
- package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.mjs +379 -0
- package/dist/v1/libs/tools/TinyUriParser.cjs +217 -0
- package/dist/v1/libs/tools/TinyUriParser.d.mts +109 -0
- package/dist/v1/libs/tools/TinyUriParser.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyUriParser.mjs +183 -0
- package/dist/v1/libs/utils/TinyCloner.cjs +466 -0
- package/dist/v1/libs/utils/TinyCloner.d.mts +221 -0
- package/dist/v1/libs/utils/TinyCloner.d.mts.map +1 -0
- package/dist/v1/libs/utils/TinyCloner.mjs +416 -0
- package/dist/v1/libs/utils/TinyPromiseQueue.cjs +1 -1
- package/dist/v1/libs/utils/TinyPromiseQueue.d.mts +2 -2
- package/dist/v1/libs/utils/TinyPromiseQueue.d.mts.map +1 -1
- package/dist/v1/libs/utils/TinyPromiseQueue.mjs +1 -1
- package/dist/v1/libs/utils/TinyThrottledApi.cjs +333 -0
- package/dist/v1/libs/utils/TinyThrottledApi.d.mts +163 -0
- package/dist/v1/libs/utils/TinyThrottledApi.d.mts.map +1 -0
- package/dist/v1/libs/utils/TinyThrottledApi.mjs +294 -0
- package/dist/v1/libs/worker/browser/TinyWebWorker.cjs +342 -0
- package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts +97 -0
- package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts.map +1 -0
- package/dist/v1/libs/worker/browser/TinyWebWorker.mjs +305 -0
- package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.cjs +346 -0
- package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts +127 -0
- package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts.map +1 -0
- package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.mjs +304 -0
- package/dist/v1/regexp/Email.cjs +185 -0
- package/dist/v1/regexp/Email.d.mts +73 -0
- package/dist/v1/regexp/Email.d.mts.map +1 -0
- package/dist/v1/regexp/Email.mjs +153 -0
- package/dist/v1/regexp/Glob.cjs +293 -0
- package/dist/v1/regexp/Glob.d.mts +45 -0
- package/dist/v1/regexp/Glob.d.mts.map +1 -0
- package/dist/v1/regexp/Glob.mjs +260 -0
- package/dist/v1/regexp/Ipv4.cjs +57 -0
- package/dist/v1/regexp/Ipv4.d.mts +29 -0
- package/dist/v1/regexp/Ipv4.d.mts.map +1 -0
- package/dist/v1/regexp/Ipv4.mjs +45 -0
- package/dist/v1/regexp/Ipv6.cjs +67 -0
- package/dist/v1/regexp/Ipv6.d.mts +29 -0
- package/dist/v1/regexp/Ipv6.d.mts.map +1 -0
- package/dist/v1/regexp/Ipv6.mjs +54 -0
- package/dist/v1/regexp/SegmentExtractor.cjs +145 -0
- package/dist/v1/regexp/SegmentExtractor.d.mts +91 -0
- package/dist/v1/regexp/SegmentExtractor.d.mts.map +1 -0
- package/dist/v1/regexp/SegmentExtractor.mjs +116 -0
- package/dist/v1/regexp/UrlDetector.cjs +125 -0
- package/dist/v1/regexp/UrlDetector.d.mts +67 -0
- package/dist/v1/regexp/UrlDetector.d.mts.map +1 -0
- package/dist/v1/regexp/UrlDetector.mjs +102 -0
- package/dist/v1/regexp/Username/index.cjs +233 -0
- package/dist/v1/regexp/Username/index.d.mts +77 -0
- package/dist/v1/regexp/Username/index.d.mts.map +1 -0
- package/dist/v1/regexp/Username/index.mjs +199 -0
- package/dist/v1/regexp/Username/jsDoc.cjs +2 -0
- package/dist/v1/regexp/Username/jsDoc.d.mts +57 -0
- package/dist/v1/regexp/Username/jsDoc.d.mts.map +1 -0
- package/dist/v1/regexp/Username/jsDoc.mjs +18 -0
- package/dist/v1/regexp/Username/templates/BlueSky.cjs +56 -0
- package/dist/v1/regexp/Username/templates/BlueSky.d.mts +35 -0
- package/dist/v1/regexp/Username/templates/BlueSky.d.mts.map +1 -0
- package/dist/v1/regexp/Username/templates/BlueSky.mjs +52 -0
- package/dist/v1/regexp/Username/templates/Discord.cjs +505 -0
- package/dist/v1/regexp/Username/templates/Discord.d.mts +209 -0
- package/dist/v1/regexp/Username/templates/Discord.d.mts.map +1 -0
- package/dist/v1/regexp/Username/templates/Discord.mjs +458 -0
- package/dist/v1/regexp/Username/templates/MatrixProtocol.cjs +143 -0
- package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts +70 -0
- package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts.map +1 -0
- package/dist/v1/regexp/Username/templates/MatrixProtocol.mjs +128 -0
- package/dist/v1/regexp/Username/templates/deprecated/Discord.cjs +24 -0
- package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts +17 -0
- package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts.map +1 -0
- package/dist/v1/regexp/Username/templates/deprecated/Discord.mjs +20 -0
- package/dist/v1/regexp/Username/templates/index.cjs +11 -0
- package/dist/v1/regexp/Username/templates/index.d.mts +5 -0
- package/dist/v1/regexp/Username/templates/index.d.mts.map +1 -0
- package/dist/v1/regexp/Username/templates/index.mjs +4 -0
- package/dist/v1/regexp/index.cjs +41 -0
- package/dist/v1/regexp/index.d.mts +9 -0
- package/dist/v1/regexp/index.d.mts.map +1 -0
- package/dist/v1/regexp/index.mjs +8 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.cjs +64 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts +11 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts.map +1 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.mjs +51 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.cjs +66 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts +11 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts.map +1 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.mjs +51 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.cjs +39 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts +11 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts.map +1 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.mjs +28 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.cjs +494 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts +142 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts.map +1 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.mjs +445 -0
- package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.cjs +725 -0
- package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts +293 -0
- package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts.map +1 -0
- package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs +614 -0
- package/dist/v1/webTemplates/bootstrap/5.3/scss/input/Placeholder-Colors-Fix.scss +64 -0
- package/dist/v1/webTemplates/bootstrap/5.3/scss/spacing/Spacing-Plus.scss +31 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.cjs +135 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts +83 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts.map +1 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.mjs +120 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.cjs +127 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts +95 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts.map +1 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.mjs +109 -0
- package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.cjs +83 -0
- package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts +46 -0
- package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts.map +1 -0
- package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.mjs +71 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.cjs +493 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts +67 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts.map +1 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.mjs +399 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.cjs +35 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts +6 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts.map +1 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.mjs +29 -0
- package/docs/info/RegExp.md +74 -0
- package/docs/v1/Exports.md +111 -0
- package/docs/v1/README.md +117 -13
- package/docs/v1/basics/asyncReplace.md +2 -0
- package/docs/v1/basics/browserDetector.md +28 -11
- package/docs/v1/basics/crypto.md +85 -0
- package/docs/v1/basics/deprecated/html.md +2 -0
- package/docs/v1/basics/deprecated/objFilter.md +2 -0
- package/docs/v1/basics/html.md +2 -0
- package/docs/v1/basics/objChecker.md +55 -0
- package/docs/v1/basics/objFilter.md +57 -86
- package/docs/v1/basics/promiseUtils.md +12 -3
- package/docs/v1/basics/text.md +0 -1
- package/docs/v1/libs/array/TinyArrayComparator.md +50 -39
- package/docs/v1/libs/fs/TinyFS.md +752 -0
- package/docs/v1/libs/fs/TinyOPFSFileSystem.md +495 -0
- package/docs/v1/libs/fs/TinyStorageBucketFileSystem.md +407 -0
- package/docs/v1/libs/plugin/TinyPlugin.md +441 -0
- package/docs/v1/libs/plugin/TinyVersion.md +145 -0
- package/docs/v1/libs/router/TinyRouter.md +216 -0
- package/docs/v1/libs/storage/TinyMapCache.md +219 -0
- package/docs/v1/libs/storage/TinySetMapDatabase.md +478 -0
- package/docs/v1/libs/sw/browser/TinyNotificationAdapter.md +280 -0
- package/docs/v1/libs/sw/browser/TinyPushManager.md +782 -0
- package/docs/v1/libs/sw/browser/TinyServiceWorker.md +365 -0
- package/docs/v1/libs/sw/browser/plugins/TabManager.md +133 -0
- package/docs/v1/libs/sw/service/TinyPushRouter.md +314 -0
- package/docs/v1/libs/sw/service/TinyServiceWorkerEngine.md +748 -0
- package/docs/v1/libs/sw/service/plugins/GlobBypassPlugin.md +229 -0
- package/docs/v1/libs/sw/service/plugins/GlobCachePlugin.md +91 -0
- package/docs/v1/libs/sw/service/plugins/Ping.md +36 -0
- package/docs/v1/libs/sw/service/plugins/TabManager.md +64 -0
- package/docs/v1/libs/sw/service/plugins/ViteFileDetector.md +92 -0
- package/docs/v1/libs/sw/service/shared/TinyPushPayload.md +316 -0
- package/docs/v1/libs/text/TinyI18.md +80 -56
- package/docs/v1/libs/tools/TinyBrowserMonitor.md +170 -0
- package/docs/v1/libs/tools/TinyDebugger.md +117 -1
- package/docs/v1/libs/tools/TinyHtmlTagRegexBuilder.md +141 -0
- package/docs/v1/libs/tools/TinyHttpResponseRegistry.md +129 -0
- package/docs/v1/libs/tools/TinyPasswordValidator.md +153 -0
- package/docs/v1/libs/tools/TinyPkgExportValidator.md +45 -1
- package/docs/v1/libs/tools/TinySiteMap.md +134 -0
- package/docs/v1/libs/tools/TinySiteMapStream.md +97 -0
- package/docs/v1/libs/tools/TinyURLSecurityVerifier.md +146 -0
- package/docs/v1/libs/tools/TinyUriParser/Discord.md +374 -0
- package/docs/v1/libs/tools/TinyUriParser/MatrixProtocol.md +54 -0
- package/docs/v1/libs/tools/TinyUriParser.md +128 -0
- package/docs/v1/libs/utils/TinyCloner.md +126 -0
- package/docs/v1/libs/utils/TinyPromiseQueue.md +1 -1
- package/docs/v1/libs/utils/TinyThrottledApi.md +219 -0
- package/docs/v1/libs/worker/browser/TinyWebWorker.md +331 -0
- package/docs/v1/libs/worker/engine/TinyWebWorkerEngine.md +137 -0
- package/docs/v1/regexp/Email.md +127 -0
- package/docs/v1/regexp/Glob.md +155 -0
- package/docs/v1/regexp/IPv4.md +103 -0
- package/docs/v1/regexp/IPv6.md +122 -0
- package/docs/v1/regexp/SegmentExtractor.md +120 -0
- package/docs/v1/regexp/UrlDetector.md +117 -0
- package/docs/v1/regexp/Username/Base.md +131 -0
- package/docs/v1/regexp/Username/Discord.md +267 -0
- package/docs/v1/regexp/Username/MatrixProtocol.md +131 -0
- package/docs/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters.md +569 -0
- package/docs/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.md +174 -0
- package/docs/v1/webTemplates/media/MediaValidator/v1/Browser.md +123 -0
- package/docs/v1/webTemplates/media/MediaValidator/v1/Node.md +136 -0
- package/docs/v1/webTemplates/multiformats/14.0/IPFSHasher.md +310 -0
- package/docs/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.md +131 -0
- package/docs/v1/webTemplates/vite/7.3/plugins/githubUtils.md +50 -0
- package/package.json +313 -18
- package/types/EventEmitter.d.ts +48 -0
- 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` | `
|
|
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.
|