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
|
@@ -1,21 +1,82 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import { isValidObj } from '../../basics/objChecker.mjs';
|
|
3
3
|
import { browserIs } from '../../basics/browserDetector.mjs';
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {Object} DebuggerConstructor
|
|
6
|
+
* @property {Partial<Console>} logger - A custom logger (must implement Console methods).
|
|
7
|
+
* @property {string} id - The unique identifier for this debugger instance.
|
|
8
|
+
* @property {boolean} [autoHideId=false] - Whether to hide the instance id whenever a sub id is set.
|
|
9
|
+
* @property {boolean} debugMode - Whether to enable internal debug logging.
|
|
10
|
+
* @property {boolean} [canEmitLogs=false] - Whether to emit debug events to listeners.
|
|
11
|
+
* @property {boolean} [useLogColors=false] - Whether to enable log color support.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* A `console`-compatible facade. Every method delegates to a TinyDebugger instance.
|
|
15
|
+
* @typedef {Object} ConsoleFacade
|
|
16
|
+
* @property {(...data: any[]) => void} log - Writes a log message.
|
|
17
|
+
* @property {(...data: any[]) => void} info - Writes an informational message.
|
|
18
|
+
* @property {(...data: any[]) => void} warn - Writes a warning message.
|
|
19
|
+
* @property {(...data: any[]) => void} error - Writes an error message.
|
|
20
|
+
* @property {(...data: any[]) => void} debug - Writes a debug message.
|
|
21
|
+
* @property {(...data: any[]) => void} dirxml - Writes an XML representation.
|
|
22
|
+
* @property {(...data: any[]) => void} group - Starts a log group.
|
|
23
|
+
* @property {(...data: any[]) => void} groupCollapsed - Starts a collapsed log group.
|
|
24
|
+
* @property {(...data: any[]) => void} trace - Writes a stack trace.
|
|
25
|
+
* @property {(condition: boolean, ...data: any[]) => void} assert - Logs when the condition is false.
|
|
26
|
+
* @property {(item: any, options?: import('util').InspectOptions) => void} dir - Logs an object.
|
|
27
|
+
* @property {(tabularData: any, properties?: string[]) => void} table - Logs a table.
|
|
28
|
+
* @property {() => void} clear - Clears the console.
|
|
29
|
+
* @property {() => void} groupEnd - Ends the current log group.
|
|
30
|
+
* @property {(label?: string) => void} count - Logs the call count for a label.
|
|
31
|
+
* @property {(label?: string) => void} countReset - Resets the counter for a label.
|
|
32
|
+
* @property {(label?: string) => void} time - Starts a timer.
|
|
33
|
+
* @property {(label?: string) => void} timeEnd - Stops a timer.
|
|
34
|
+
* @property {(label?: string, ...data: any[]) => void} timeLog - Logs the current timer value.
|
|
35
|
+
* @property {(label?: string) => void} timeStamp - Adds a timestamp marker.
|
|
36
|
+
* @property {(label?: string) => void} profile - Starts a profiler.
|
|
37
|
+
* @property {(label?: string) => void} profileEnd - Stops a profiler.
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* Event map for {@link TinyDebugger}.
|
|
41
|
+
*
|
|
42
|
+
* `TinyDebugger` is a base class that is widely extended, so the event map is kept
|
|
43
|
+
* open (`Record<string, ...>`) to allow subclasses to emit their own events while
|
|
44
|
+
* still providing autocomplete for the well-known debug events.
|
|
45
|
+
*
|
|
46
|
+
* @typedef {{
|
|
47
|
+
* setLogSubId: (value: string) => void,
|
|
48
|
+
* setUseLogColors: (value: boolean) => void,
|
|
49
|
+
* setDebugMode: (value: boolean) => void,
|
|
50
|
+
* 'debug:clear': () => void,
|
|
51
|
+
* 'debug:groupEnd': () => void,
|
|
52
|
+
* 'debug:logLabel': (logType: string, label?: string) => void,
|
|
53
|
+
* 'debug:timeLog': (label?: string, ...args: any[]) => void,
|
|
54
|
+
* 'debug:assert': (condition?: boolean, ...args: any[]) => void,
|
|
55
|
+
* 'debug:dir': (item?: any, options?: any) => void,
|
|
56
|
+
* 'debug:table': (tabularData?: any, properties?: string[]) => void,
|
|
57
|
+
* 'debug:log': (prefix: string, message: string, ...args: any[]) => void,
|
|
58
|
+
* } & Record<string, (...args: any[]) => void>} TinyDebuggerEvents
|
|
59
|
+
*/
|
|
60
|
+
/** @type {new () => import('../../jsdoc/EventEmitter.mjs').ICustomEventEmitter<TinyDebuggerEvents>} */
|
|
61
|
+
const TypedEventEmitter = /** @type {any} */ (EventEmitter);
|
|
4
62
|
/**
|
|
5
63
|
* A lightweight debugging utility that wraps console methods and provides event emission.
|
|
6
|
-
* @extends EventEmitter
|
|
7
64
|
*/
|
|
8
|
-
class TinyDebugger extends
|
|
65
|
+
class TinyDebugger extends TypedEventEmitter {
|
|
9
66
|
/** @type {Partial<Console>} */
|
|
10
67
|
#logger;
|
|
11
68
|
/** @type {string} */
|
|
12
69
|
#logId;
|
|
70
|
+
/** @type {string|null} */
|
|
71
|
+
#logSubId = null;
|
|
13
72
|
/** @type {boolean} */
|
|
14
73
|
#canEmitLogs;
|
|
15
74
|
/** @type {boolean} */
|
|
16
75
|
#debugMode;
|
|
17
76
|
/** @type {boolean} */
|
|
18
77
|
#useLogColors;
|
|
78
|
+
/** @type {boolean} */
|
|
79
|
+
#autoHideId;
|
|
19
80
|
/**
|
|
20
81
|
* Colors (ANSI Escape Codes)
|
|
21
82
|
* @type {Map<string, string>}
|
|
@@ -27,6 +88,8 @@ class TinyDebugger extends EventEmitter {
|
|
|
27
88
|
['warn', '\x1b[33m'], // Yellow
|
|
28
89
|
['error', '\x1b[31m'], // Red
|
|
29
90
|
['debug', '\x1b[35m'], // Magenta
|
|
91
|
+
['main_class', '\x1b[34m'], // Blue
|
|
92
|
+
['sub_class', '\x1b[32m'], // Green
|
|
30
93
|
['reset', '\x1b[0m'], // Reset
|
|
31
94
|
// Color names mapping (for manual usage via _color_)
|
|
32
95
|
['black', '\x1b[30m'],
|
|
@@ -52,15 +115,10 @@ class TinyDebugger extends EventEmitter {
|
|
|
52
115
|
]);
|
|
53
116
|
/**
|
|
54
117
|
* Creates an instance of TinyDebugger.
|
|
55
|
-
* @param {
|
|
56
|
-
* @param {Partial<Console>} config.logger - A custom logger (must implement Console methods).
|
|
57
|
-
* @param {string} config.id - The unique identifier for this debugger instance.
|
|
58
|
-
* @param {boolean} config.debugMode - Whether to enable internal debug logging.
|
|
59
|
-
* @param {boolean} [config.canEmitLogs=false] - Whether to emit debug events to listeners.
|
|
60
|
-
* @param {boolean} [config.useLogColors=false] - Whether to enable log color support.
|
|
118
|
+
* @param {DebuggerConstructor} config - The configuration object.
|
|
61
119
|
* @throws {TypeError} If parameters do not match the required types.
|
|
62
120
|
*/
|
|
63
|
-
constructor({ logger, id, debugMode, canEmitLogs = false, useLogColors = false }) {
|
|
121
|
+
constructor({ logger, id, debugMode, canEmitLogs = false, useLogColors = false, autoHideId = false, }) {
|
|
64
122
|
super();
|
|
65
123
|
if (!isValidObj(logger)) {
|
|
66
124
|
throw new TypeError('Logger must be an object that implements the Console interface.');
|
|
@@ -77,10 +135,14 @@ class TinyDebugger extends EventEmitter {
|
|
|
77
135
|
if (typeof useLogColors !== 'boolean') {
|
|
78
136
|
throw new TypeError('useLogColors must be a boolean.');
|
|
79
137
|
}
|
|
138
|
+
if (typeof autoHideId !== 'boolean') {
|
|
139
|
+
throw new TypeError('autoHideId must be a boolean.');
|
|
140
|
+
}
|
|
80
141
|
this.#logId = id;
|
|
81
142
|
this.#logger = logger;
|
|
82
143
|
this.#debugMode = debugMode;
|
|
83
144
|
this.#canEmitLogs = canEmitLogs;
|
|
145
|
+
this.#autoHideId = autoHideId;
|
|
84
146
|
this.#useLogColors = browserIs() !== 'firefox' ? useLogColors : false;
|
|
85
147
|
this.log('info', `Emit logs of debug mode set to: ${this.#debugMode ? 'ON' : 'OFF'}`);
|
|
86
148
|
this.log('info', 'Custom logger assigned.');
|
|
@@ -91,6 +153,29 @@ class TinyDebugger extends EventEmitter {
|
|
|
91
153
|
get logId() {
|
|
92
154
|
return this.#logId;
|
|
93
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* @returns {string} The instance debug sub id.
|
|
158
|
+
*/
|
|
159
|
+
get logSubId() {
|
|
160
|
+
if (typeof this.#logSubId !== 'string') {
|
|
161
|
+
throw new Error('logSubId has not been set yet. Assign a string to "logSubId" before reading it.');
|
|
162
|
+
}
|
|
163
|
+
return this.#logSubId;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* @param {string} value - The new instance debug sub id.
|
|
167
|
+
* @throws {Error} If the sub id has not been set yet.
|
|
168
|
+
*/
|
|
169
|
+
set logSubId(value) {
|
|
170
|
+
if (typeof value !== 'string') {
|
|
171
|
+
throw new TypeError(`logSubId must be a string. Received: ${typeof value}.`);
|
|
172
|
+
}
|
|
173
|
+
if (this.#logSubId !== null) {
|
|
174
|
+
throw new Error(`logSubId is already set to "${this.#logSubId}" and cannot be reassigned.`);
|
|
175
|
+
}
|
|
176
|
+
this.#logSubId = value;
|
|
177
|
+
this.emit('setLogSubId', value);
|
|
178
|
+
}
|
|
94
179
|
/**
|
|
95
180
|
* @returns {boolean} Whether event emission is enabled.
|
|
96
181
|
*/
|
|
@@ -113,7 +198,7 @@ class TinyDebugger extends EventEmitter {
|
|
|
113
198
|
}
|
|
114
199
|
this.#useLogColors = value;
|
|
115
200
|
this.log('info', `Log Colors usage mode set to: ${this.#useLogColors ? 'ON' : 'OFF'}`);
|
|
116
|
-
this.emit('
|
|
201
|
+
this.emit('setUseLogColors', value);
|
|
117
202
|
}
|
|
118
203
|
/**
|
|
119
204
|
* @returns {boolean} True if debug mode is enabled.
|
|
@@ -184,6 +269,14 @@ class TinyDebugger extends EventEmitter {
|
|
|
184
269
|
}
|
|
185
270
|
return result;
|
|
186
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* Internal method to apply prefix and color replacements.
|
|
274
|
+
* @param {string} text - The text to format.
|
|
275
|
+
* @returns {string} The formatted text.
|
|
276
|
+
*/
|
|
277
|
+
_applyLogFormatting(text) {
|
|
278
|
+
return this.#applyFormatting(text);
|
|
279
|
+
}
|
|
187
280
|
/**
|
|
188
281
|
* Clears the console.
|
|
189
282
|
* @returns {void|undefined}
|
|
@@ -240,7 +333,7 @@ class TinyDebugger extends EventEmitter {
|
|
|
240
333
|
}
|
|
241
334
|
/**
|
|
242
335
|
* Starts a timer with a label.
|
|
243
|
-
* @param {string} label - The label for the timer.
|
|
336
|
+
* @param {string} [label] - The label for the timer.
|
|
244
337
|
* @param {...any} args - Additional arguments for the timer.
|
|
245
338
|
* @throws {TypeError} If label is not a string.
|
|
246
339
|
* @returns {void}
|
|
@@ -256,7 +349,7 @@ class TinyDebugger extends EventEmitter {
|
|
|
256
349
|
}
|
|
257
350
|
/**
|
|
258
351
|
* Asserts a condition and logs a message if the condition is false.
|
|
259
|
-
* @param {boolean} condition - The condition to evaluate.
|
|
352
|
+
* @param {boolean} [condition] - The condition to evaluate.
|
|
260
353
|
* @param {...any} args - Arguments to log if the condition is false.
|
|
261
354
|
* @returns {void}
|
|
262
355
|
*/
|
|
@@ -271,7 +364,7 @@ class TinyDebugger extends EventEmitter {
|
|
|
271
364
|
}
|
|
272
365
|
/**
|
|
273
366
|
* Logs an element as a JavaScript object.
|
|
274
|
-
* @param {any} item - The object to inspect.
|
|
367
|
+
* @param {any} [item] - The object to inspect.
|
|
275
368
|
* @param {import('util').InspectOptions} [options] - Inspection options.
|
|
276
369
|
* @returns {void}
|
|
277
370
|
*/
|
|
@@ -284,7 +377,7 @@ class TinyDebugger extends EventEmitter {
|
|
|
284
377
|
}
|
|
285
378
|
/**
|
|
286
379
|
* Displays a table of objects.
|
|
287
|
-
* @param {any} tabularData - The data to be displayed in a table.
|
|
380
|
+
* @param {any} [tabularData] - The data to be displayed in a table.
|
|
288
381
|
* @param {string[]} [properties] - The properties (columns) to display.
|
|
289
382
|
* @throws {TypeError} If properties is provided but is not an array of strings.
|
|
290
383
|
* @returns {void}
|
|
@@ -332,20 +425,69 @@ class TinyDebugger extends EventEmitter {
|
|
|
332
425
|
throw new TypeError('The message must be a string.');
|
|
333
426
|
}
|
|
334
427
|
let prefix = this.#logId;
|
|
428
|
+
let subPrefix = this.#logSubId ?? '';
|
|
335
429
|
let formattedMessage = message;
|
|
336
|
-
|
|
430
|
+
const showId = !this.#autoHideId || typeof this.#logSubId !== 'string';
|
|
431
|
+
prefix = showId ? this.#applyFormatting(prefix) : '';
|
|
432
|
+
if (subPrefix)
|
|
433
|
+
subPrefix = this.#applyFormatting(subPrefix);
|
|
337
434
|
formattedMessage = this.#applyFormatting(formattedMessage);
|
|
435
|
+
const fullPrefix = `${prefix}${subPrefix ? (showId ? ` ${subPrefix}` : subPrefix) : ''}`;
|
|
338
436
|
const logFunc = this.#logger[logType] ? this.#logger[logType] : console[logType];
|
|
339
437
|
if (logFunc) {
|
|
340
438
|
if (this.#canEmitLogs)
|
|
341
|
-
this.emit('debug:log',
|
|
342
|
-
return logFunc(
|
|
439
|
+
this.emit('debug:log', fullPrefix, formattedMessage, ...args);
|
|
440
|
+
return logFunc(fullPrefix, formattedMessage, ...args);
|
|
343
441
|
}
|
|
344
442
|
else {
|
|
345
443
|
if (this.#canEmitLogs)
|
|
346
|
-
this.emit('debug:log',
|
|
347
|
-
return console.log(
|
|
444
|
+
this.emit('debug:log', fullPrefix, formattedMessage, ...args);
|
|
445
|
+
return console.log(fullPrefix, formattedMessage, ...args);
|
|
348
446
|
}
|
|
349
447
|
}
|
|
448
|
+
/**
|
|
449
|
+
* Forwards a `console`-style call to the internal `log` method.
|
|
450
|
+
* @param {'log' | 'info' | 'warn' | 'error' | 'debug' | 'dirxml' | 'group' | 'groupCollapsed' | 'trace'} logType - The console method to use.
|
|
451
|
+
* @param {any[]} data - The arguments forwarded to the logger.
|
|
452
|
+
* @returns {void}
|
|
453
|
+
*/
|
|
454
|
+
#forwardLog(logType, data) {
|
|
455
|
+
const [message = '', ...rest] = data;
|
|
456
|
+
return typeof message === 'string'
|
|
457
|
+
? this.log(logType, message, ...rest)
|
|
458
|
+
: this.log(logType, '', message, ...rest);
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Builds a `console`-compatible facade bound to this instance.
|
|
462
|
+
* Every call is routed through the existing logging methods, so formatting,
|
|
463
|
+
* debug mode and event emission keep working without extra code.
|
|
464
|
+
* @returns {ConsoleFacade} A `console`-compatible object bound to this instance.
|
|
465
|
+
*/
|
|
466
|
+
toConsole() {
|
|
467
|
+
return {
|
|
468
|
+
log: (...data) => this.#forwardLog('log', data),
|
|
469
|
+
info: (...data) => this.#forwardLog('info', data),
|
|
470
|
+
warn: (...data) => this.#forwardLog('warn', data),
|
|
471
|
+
error: (...data) => this.#forwardLog('error', data),
|
|
472
|
+
debug: (...data) => this.#forwardLog('debug', data),
|
|
473
|
+
dirxml: (...data) => this.#forwardLog('dirxml', data),
|
|
474
|
+
group: (...data) => this.#forwardLog('group', data),
|
|
475
|
+
groupCollapsed: (...data) => this.#forwardLog('groupCollapsed', data),
|
|
476
|
+
trace: (...data) => this.#forwardLog('trace', data),
|
|
477
|
+
assert: (condition, ...data) => this.logAssert(condition, ...data),
|
|
478
|
+
dir: (item, options) => this.logDir(item, options),
|
|
479
|
+
table: (tabularData, properties) => this.logTable(tabularData, properties),
|
|
480
|
+
clear: () => this.logClear(),
|
|
481
|
+
groupEnd: () => this.logGroupEnd(),
|
|
482
|
+
count: (label) => this.logLabel('count', label),
|
|
483
|
+
countReset: (label) => this.logLabel('countReset', label),
|
|
484
|
+
time: (label) => this.logLabel('time', label),
|
|
485
|
+
timeEnd: (label) => this.logLabel('timeEnd', label),
|
|
486
|
+
timeLog: (label, ...data) => this.logTimeLabel(label, ...data),
|
|
487
|
+
timeStamp: (label) => this.logLabel('timeStamp', label),
|
|
488
|
+
profile: (label) => this.logLabel('profile', label),
|
|
489
|
+
profileEnd: (label) => this.logLabel('profileEnd', label),
|
|
490
|
+
};
|
|
491
|
+
}
|
|
350
492
|
}
|
|
351
493
|
export default TinyDebugger;
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Defines the valid types for an HTML attribute name.
|
|
5
|
+
* @typedef {never|string} Attribute
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Configuration object used to define the parameters for the regex builder.
|
|
10
|
+
* @template {string} TagName
|
|
11
|
+
* @template {boolean} CaptureAllAttributes
|
|
12
|
+
* @template {Attribute} Attributes
|
|
13
|
+
* @typedef {Object} HtmlRegexConfig
|
|
14
|
+
* @property {TagName} tagName - The HTML tag name (e.g., 'a', 'div').
|
|
15
|
+
* @property {Attributes[]} [attributes=[]] - An array of attribute names to capture in individual groups.
|
|
16
|
+
* @property {boolean} [freeMode=false] - If true, allows the inner content to contain newlines.
|
|
17
|
+
* @property {CaptureAllAttributes} captureAllAttributes - If true, ignores specific attributes and focuses on the tag structure.
|
|
18
|
+
* @property {string} [contentPattern='[\s\S]*?'] - The regex pattern for the tag's inner content.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Represents the structured result of a parsed HTML tag.
|
|
23
|
+
* @typedef {Object} ParsedHtmlTag
|
|
24
|
+
* @property {Record<string, string|boolean>} attributes - Object containing all parsed attributes.
|
|
25
|
+
* @property {string} child - The inner content of the HTML tag.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Class responsible for constructing highly configurable regular expressions
|
|
30
|
+
* to capture HTML tags and their specific attributes.
|
|
31
|
+
* @template {string} TagName
|
|
32
|
+
* @template {boolean} CaptureAllAttributes
|
|
33
|
+
* @template {Attribute} Attributes
|
|
34
|
+
*/
|
|
35
|
+
class TinyHtmlTagRegexBuilder {
|
|
36
|
+
/**
|
|
37
|
+
* The name of the HTML tag to be matched.
|
|
38
|
+
* @type {TagName}
|
|
39
|
+
*/
|
|
40
|
+
#tagName;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The list of specific attribute names to be captured.
|
|
44
|
+
* @type {Attributes[]}
|
|
45
|
+
*/
|
|
46
|
+
#attributes = [];
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Indicates if the content pattern should allow newlines.
|
|
50
|
+
* @type {boolean}
|
|
51
|
+
*/
|
|
52
|
+
#freeMode = false;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Indicates if all attributes should be captured in a single group.
|
|
56
|
+
* @type {CaptureAllAttributes}
|
|
57
|
+
*/
|
|
58
|
+
#captureAllAttributes;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The regex pattern used for the tag's inner content.
|
|
62
|
+
* @type {string}
|
|
63
|
+
*/
|
|
64
|
+
#contentPattern = '';
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Initializes a new instance of the TinyHtmlTagRegexBuilder.
|
|
68
|
+
* @param {HtmlRegexConfig<TagName, CaptureAllAttributes, Attributes>} config - Initial configuration object.
|
|
69
|
+
*/
|
|
70
|
+
constructor(config) {
|
|
71
|
+
const tagName = config.tagName;
|
|
72
|
+
if (typeof tagName !== 'string') {
|
|
73
|
+
throw new TypeError('The tagName must be a string.');
|
|
74
|
+
}
|
|
75
|
+
if (/[<>\s]/.test(tagName)) {
|
|
76
|
+
throw new TypeError('The tagName must be a single word without spaces or < > characters.');
|
|
77
|
+
}
|
|
78
|
+
this.#tagName = tagName;
|
|
79
|
+
|
|
80
|
+
// Attribute validation
|
|
81
|
+
if (config.attributes) {
|
|
82
|
+
if (!Array.isArray(config.attributes)) {
|
|
83
|
+
throw new TypeError('The attributes property must be an array of strings.');
|
|
84
|
+
}
|
|
85
|
+
for (const attr of config.attributes) {
|
|
86
|
+
if (typeof attr !== 'string' || /[<>\s]/.test(attr)) {
|
|
87
|
+
throw new TypeError(
|
|
88
|
+
'Each attribute name must be a single word string without spaces or < > characters.',
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
this.#attributes = config.attributes;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (typeof config.captureAllAttributes !== 'boolean') {
|
|
96
|
+
throw new TypeError('captureAllAttributes must be a boolean.');
|
|
97
|
+
}
|
|
98
|
+
this.#captureAllAttributes = config.captureAllAttributes;
|
|
99
|
+
|
|
100
|
+
this.freeMode = config.freeMode ?? false;
|
|
101
|
+
this.contentPattern = config.contentPattern || (this.#freeMode ? '[\\s\\S]*?' : '.*?');
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// --- Getters and Setters with Validation ---
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Gets the target HTML tag name.
|
|
108
|
+
* @returns {TagName}
|
|
109
|
+
*/
|
|
110
|
+
get tagName() {
|
|
111
|
+
return this.#tagName;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Gets a copy of the attributes to be captured.
|
|
116
|
+
* @returns {Attributes[]}
|
|
117
|
+
*/
|
|
118
|
+
get attributes() {
|
|
119
|
+
return [...this.#attributes];
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Gets the current free mode status.
|
|
124
|
+
* @returns {boolean}
|
|
125
|
+
*/
|
|
126
|
+
get freeMode() {
|
|
127
|
+
return this.#freeMode;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Sets the free mode status.
|
|
132
|
+
* @param {boolean} value
|
|
133
|
+
*/
|
|
134
|
+
set freeMode(value) {
|
|
135
|
+
if (typeof value !== 'boolean') throw new TypeError('freeMode must be a boolean.');
|
|
136
|
+
this.#freeMode = value;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Gets the attribute capture mode.
|
|
141
|
+
* @returns {CaptureAllAttributes}
|
|
142
|
+
*/
|
|
143
|
+
get captureAllAttributes() {
|
|
144
|
+
return this.#captureAllAttributes;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Gets the current regex pattern for the tag's content.
|
|
149
|
+
* @returns {string}
|
|
150
|
+
*/
|
|
151
|
+
get contentPattern() {
|
|
152
|
+
return this.#contentPattern;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Sets the regex pattern for the tag's content.
|
|
157
|
+
* @param {string} value
|
|
158
|
+
*/
|
|
159
|
+
set contentPattern(value) {
|
|
160
|
+
if (typeof value !== 'string') throw new TypeError('contentPattern must be a string.');
|
|
161
|
+
this.#contentPattern = value;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Constructs the RegExp string.
|
|
166
|
+
* @returns {string} The constructed regular expression string.
|
|
167
|
+
*/
|
|
168
|
+
toString() {
|
|
169
|
+
let regexString = `<${this.#tagName}`;
|
|
170
|
+
|
|
171
|
+
if (this.#captureAllAttributes) {
|
|
172
|
+
// Captures all attributes (and the spaces between them) in a single capture group.
|
|
173
|
+
regexString += `([^>]*)`;
|
|
174
|
+
} else {
|
|
175
|
+
// Uses lookaheads to capture specific attributes individually.
|
|
176
|
+
for (const attr of this.#attributes) {
|
|
177
|
+
// This pattern handles:
|
|
178
|
+
// 1. quoted: attr="value" or attr='value'
|
|
179
|
+
// 2. unquoted: attr=value
|
|
180
|
+
// 3. solitary: attr
|
|
181
|
+
regexString += `(?=[^>]*?\\s+${attr}(?:=(?:["']([^"']*)["']|([^"'>\\s]+)))?(?=\\s|>|\\/))`;
|
|
182
|
+
}
|
|
183
|
+
// Consumes the rest of the opening tag without creating a new capture group
|
|
184
|
+
regexString += `[^>]*`;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Closes the opening tag (the final >), adds the content group, and the closing tag
|
|
188
|
+
regexString += `>(${this.#contentPattern})</${this.#tagName}>`;
|
|
189
|
+
|
|
190
|
+
return regexString;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Constructs and returns the final RegExp object.
|
|
195
|
+
* @param {string} [flag='g']
|
|
196
|
+
* @returns {RegExp} The configured regular expression.
|
|
197
|
+
*/
|
|
198
|
+
toRegExp(flag = 'g') {
|
|
199
|
+
return new RegExp(this.toString(), flag);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Executes the generated regex against an HTML string and organizes the results.
|
|
204
|
+
*
|
|
205
|
+
* @param {string} htmlString - The HTML text to be parsed.
|
|
206
|
+
* @returns {ParsedHtmlTag[]} An array containing an object for each matched tag, with its attributes and child.
|
|
207
|
+
*/
|
|
208
|
+
parse(htmlString) {
|
|
209
|
+
// We force the 'g' flag to ensure we can iterate over all occurrences.
|
|
210
|
+
const regex = this.toRegExp('g');
|
|
211
|
+
/** @type {ParsedHtmlTag[]} */
|
|
212
|
+
const results = [];
|
|
213
|
+
let match;
|
|
214
|
+
|
|
215
|
+
while ((match = regex.exec(htmlString)) !== null) {
|
|
216
|
+
/** @type {Record<string, string|boolean>} */
|
|
217
|
+
const attributesObj = {};
|
|
218
|
+
let child = '';
|
|
219
|
+
|
|
220
|
+
if (this.#captureAllAttributes) {
|
|
221
|
+
const attrString = match[1] || '';
|
|
222
|
+
child = match[2] || '';
|
|
223
|
+
|
|
224
|
+
// Splits the raw string into key-value pairs
|
|
225
|
+
const attrRegex = /([^\s=]+)(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s"'>]+)))?/g;
|
|
226
|
+
let attrMatch;
|
|
227
|
+
|
|
228
|
+
while ((attrMatch = attrRegex.exec(attrString)) !== null) {
|
|
229
|
+
const attrName = attrMatch[1];
|
|
230
|
+
// If the value exists in any of the groups, we take it. Otherwise, it is a solitary attribute (e.g., disabled = true).
|
|
231
|
+
const attrValue = attrMatch[2] ?? attrMatch[3] ?? attrMatch[4] ?? true;
|
|
232
|
+
attributesObj[attrName] = attrValue;
|
|
233
|
+
}
|
|
234
|
+
} else {
|
|
235
|
+
// Mode with specific attributes based on the configuration array
|
|
236
|
+
for (let i = 0; i < this.#attributes.length; i++) {
|
|
237
|
+
const attrName = this.#attributes[i];
|
|
238
|
+
const quotedValue = match[i * 2 + 1];
|
|
239
|
+
const unquotedValue = match[i * 2 + 2];
|
|
240
|
+
|
|
241
|
+
attributesObj[attrName] = quotedValue ?? unquotedValue ?? true;
|
|
242
|
+
}
|
|
243
|
+
child = match[this.#attributes.length * 2 + 1] || '';
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
results.push({
|
|
247
|
+
attributes: attributesObj,
|
|
248
|
+
child: child,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return results;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
module.exports = TinyHtmlTagRegexBuilder;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines the valid types for an HTML attribute name.
|
|
3
|
+
* @typedef {never|string} Attribute
|
|
4
|
+
*/
|
|
5
|
+
export type Attribute = never | string;
|
|
6
|
+
export type HtmlRegexConfig<TagName extends string, CaptureAllAttributes extends boolean, Attributes extends Attribute> = {
|
|
7
|
+
/**
|
|
8
|
+
* - The HTML tag name (e.g., 'a', 'div').
|
|
9
|
+
*/
|
|
10
|
+
tagName: TagName;
|
|
11
|
+
/**
|
|
12
|
+
* - An array of attribute names to capture in individual groups.
|
|
13
|
+
*/
|
|
14
|
+
attributes?: Attributes[];
|
|
15
|
+
/**
|
|
16
|
+
* - If true, allows the inner content to contain newlines.
|
|
17
|
+
*/
|
|
18
|
+
freeMode?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* - If true, ignores specific attributes and focuses on the tag structure.
|
|
21
|
+
*/
|
|
22
|
+
captureAllAttributes: CaptureAllAttributes;
|
|
23
|
+
/**
|
|
24
|
+
* - The regex pattern for the tag's inner content.
|
|
25
|
+
*/
|
|
26
|
+
contentPattern?: string;
|
|
27
|
+
};
|
|
28
|
+
export type ParsedHtmlTag = {
|
|
29
|
+
/**
|
|
30
|
+
* - Object containing all parsed attributes.
|
|
31
|
+
*/
|
|
32
|
+
attributes: Record<string, string | boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* - The inner content of the HTML tag.
|
|
35
|
+
*/
|
|
36
|
+
child: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Configuration object used to define the parameters for the regex builder.
|
|
40
|
+
* @template {string} TagName
|
|
41
|
+
* @template {boolean} CaptureAllAttributes
|
|
42
|
+
* @template {Attribute} Attributes
|
|
43
|
+
* @typedef {Object} HtmlRegexConfig
|
|
44
|
+
* @property {TagName} tagName - The HTML tag name (e.g., 'a', 'div').
|
|
45
|
+
* @property {Attributes[]} [attributes=[]] - An array of attribute names to capture in individual groups.
|
|
46
|
+
* @property {boolean} [freeMode=false] - If true, allows the inner content to contain newlines.
|
|
47
|
+
* @property {CaptureAllAttributes} captureAllAttributes - If true, ignores specific attributes and focuses on the tag structure.
|
|
48
|
+
* @property {string} [contentPattern='[\s\S]*?'] - The regex pattern for the tag's inner content.
|
|
49
|
+
*/
|
|
50
|
+
/**
|
|
51
|
+
* Represents the structured result of a parsed HTML tag.
|
|
52
|
+
* @typedef {Object} ParsedHtmlTag
|
|
53
|
+
* @property {Record<string, string|boolean>} attributes - Object containing all parsed attributes.
|
|
54
|
+
* @property {string} child - The inner content of the HTML tag.
|
|
55
|
+
*/
|
|
56
|
+
/**
|
|
57
|
+
* Class responsible for constructing highly configurable regular expressions
|
|
58
|
+
* to capture HTML tags and their specific attributes.
|
|
59
|
+
* @template {string} TagName
|
|
60
|
+
* @template {boolean} CaptureAllAttributes
|
|
61
|
+
* @template {Attribute} Attributes
|
|
62
|
+
*/
|
|
63
|
+
declare class TinyHtmlTagRegexBuilder<TagName extends string, CaptureAllAttributes extends boolean, Attributes extends Attribute> {
|
|
64
|
+
#private;
|
|
65
|
+
/**
|
|
66
|
+
* Initializes a new instance of the TinyHtmlTagRegexBuilder.
|
|
67
|
+
* @param {HtmlRegexConfig<TagName, CaptureAllAttributes, Attributes>} config - Initial configuration object.
|
|
68
|
+
*/
|
|
69
|
+
constructor(config: HtmlRegexConfig<TagName, CaptureAllAttributes, Attributes>);
|
|
70
|
+
/**
|
|
71
|
+
* Gets the target HTML tag name.
|
|
72
|
+
* @returns {TagName}
|
|
73
|
+
*/
|
|
74
|
+
get tagName(): TagName;
|
|
75
|
+
/**
|
|
76
|
+
* Gets a copy of the attributes to be captured.
|
|
77
|
+
* @returns {Attributes[]}
|
|
78
|
+
*/
|
|
79
|
+
get attributes(): Attributes[];
|
|
80
|
+
/**
|
|
81
|
+
* Gets the current free mode status.
|
|
82
|
+
* @returns {boolean}
|
|
83
|
+
*/
|
|
84
|
+
get freeMode(): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Sets the free mode status.
|
|
87
|
+
* @param {boolean} value
|
|
88
|
+
*/
|
|
89
|
+
set freeMode(value: boolean);
|
|
90
|
+
/**
|
|
91
|
+
* Gets the attribute capture mode.
|
|
92
|
+
* @returns {CaptureAllAttributes}
|
|
93
|
+
*/
|
|
94
|
+
get captureAllAttributes(): CaptureAllAttributes;
|
|
95
|
+
/**
|
|
96
|
+
* Gets the current regex pattern for the tag's content.
|
|
97
|
+
* @returns {string}
|
|
98
|
+
*/
|
|
99
|
+
get contentPattern(): string;
|
|
100
|
+
/**
|
|
101
|
+
* Sets the regex pattern for the tag's content.
|
|
102
|
+
* @param {string} value
|
|
103
|
+
*/
|
|
104
|
+
set contentPattern(value: string);
|
|
105
|
+
/**
|
|
106
|
+
* Constructs the RegExp string.
|
|
107
|
+
* @returns {string} The constructed regular expression string.
|
|
108
|
+
*/
|
|
109
|
+
toString(): string;
|
|
110
|
+
/**
|
|
111
|
+
* Constructs and returns the final RegExp object.
|
|
112
|
+
* @param {string} [flag='g']
|
|
113
|
+
* @returns {RegExp} The configured regular expression.
|
|
114
|
+
*/
|
|
115
|
+
toRegExp(flag?: string): RegExp;
|
|
116
|
+
/**
|
|
117
|
+
* Executes the generated regex against an HTML string and organizes the results.
|
|
118
|
+
*
|
|
119
|
+
* @param {string} htmlString - The HTML text to be parsed.
|
|
120
|
+
* @returns {ParsedHtmlTag[]} An array containing an object for each matched tag, with its attributes and child.
|
|
121
|
+
*/
|
|
122
|
+
parse(htmlString: string): ParsedHtmlTag[];
|
|
123
|
+
}
|
|
124
|
+
export default TinyHtmlTagRegexBuilder;
|
|
125
|
+
//# sourceMappingURL=TinyHtmlTagRegexBuilder.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TinyHtmlTagRegexBuilder.d.mts","sourceRoot":"","sources":["../../../../src/v1/libs/tools/TinyHtmlTagRegexBuilder.mjs"],"names":[],"mappings":"AAAA;;;GAGG;AADA,YAAwB,SAAS,GAAvB,KAAK,GAAC,MAAM,CAAW;AAQjC,YAAkB,eAAe,CAHd,OAAO,SAAf,MAAe,EACN,oBAAoB,SAA7B,OAA6B,EAClB,UAAU,SAArB,SAAqB,IAEhC;;;;IAAoB,OAAO,EAAhB,OAAO,CAClB;;;;IAA0B,UAAU,AAApC,CACA,EADW,UAAU,EAAE,CACvB;;;;IAAqB,QAAQ,AAA7B,CACA,EADW,OAAO,CAClB;;;;IAAiC,oBAAoB,EAA1C,oBAAoB,CAC/B;;;;IAAoB,cAAc,AAAlC,CACF,EADa,MAAM,CACnB;CAAA,CAAA;AAIE,YAAkB,aAAa,GAC/B;;;;IAA2C,UAAU,EAA1C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAC,OAAO,CAAC,CACzC;;;;IAAmB,KAAK,EAAb,MAAM,CACnB;CAAA,CAAA;AAlBD;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AAEH;;;;;;GAMG;AACH,cAAM,uBAAuB,CAJP,OAAO,SAAf,MAAe,EACN,oBAAoB,SAA7B,OAA6B,EAClB,UAAU,SAArB,SAAqB;;IAiCjC;;;OAGG;IACH,YAAY,MAAM,EAFP,eAAe,CAAC,OAAO,EAAE,oBAAoB,EAAE,UAAU,CAElD,EAgCjB;IAID;;;OAGG;IACH,IAAI,OAAO,IAFE,OAAO,CAInB;IAED;;;OAGG;IACH,IAAI,UAAU,IAFD,UAAU,EAAE,CAIxB;IAED;;;OAGG;IACH,IAAI,QAAQ,IAFC,OAAO,CAInB;IAED;;;OAGG;IACH,IAAI,QAAQ,CAAC,KAAK,EAFP,OAEO,EAGjB;IAED;;;OAGG;IACH,IAAI,oBAAoB,IAFX,oBAAoB,CAIhC;IAED;;;OAGG;IACH,IAAI,cAAc,IAFL,MAAM,CAIlB;IAED;;;OAGG;IACH,IAAI,cAAc,CAAC,KAAK,EAFb,MAEa,EAGvB;IAED;;;OAGG;IACH,QAAQ,IAFK,MAAM,CAyBlB;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAAI,AAHV,CACA,EADQ,MAGQ,GAFN,MAAM,CAIlB;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,EAHL,MAGK,GAFH,aAAa,EAAE,CA+C3B;CACF;eAEc,uBAAuB"}
|