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,33 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
export type ICustomEventEmitter<MyEvents extends Record<string | symbol, (...args: any[]) => any>> = Omit<EventEmitter, 'on' | 'off' | 'emit' | 'once' | 'addListener' | 'removeListener' | 'removeAllListeners' | 'listeners' | 'rawListeners' | 'listenerCount' | 'prependListener' | 'prependOnceListener'> & {
|
|
3
|
+
on<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
4
|
+
once<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
5
|
+
off<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
6
|
+
addListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
7
|
+
removeListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
8
|
+
removeAllListeners<K extends keyof MyEvents>(event?: K): ICustomEventEmitter<MyEvents>;
|
|
9
|
+
prependListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
10
|
+
prependOnceListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
11
|
+
emit<K extends keyof MyEvents>(event: K, ...args: Parameters<MyEvents[K]>): boolean;
|
|
12
|
+
listeners<K extends keyof MyEvents>(event: K): MyEvents[K][];
|
|
13
|
+
rawListeners<K extends keyof MyEvents>(event: K): MyEvents[K][];
|
|
14
|
+
listenerCount<K extends keyof MyEvents>(event: K, listener?: MyEvents[K]): number;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* @template {Record<string | symbol, (...args: any[]) => any>} MyEvents
|
|
18
|
+
* @typedef {Omit<EventEmitter, 'on' | 'off' | 'emit' | 'once' | 'addListener' | 'removeListener' | 'removeAllListeners' | 'listeners' | 'rawListeners' | 'listenerCount' | 'prependListener' | 'prependOnceListener'> & {
|
|
19
|
+
* on<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
20
|
+
* once<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
21
|
+
* off<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
22
|
+
* addListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
23
|
+
* removeListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
24
|
+
* removeAllListeners<K extends keyof MyEvents>(event?: K): ICustomEventEmitter<MyEvents>;
|
|
25
|
+
* prependListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
26
|
+
* prependOnceListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
27
|
+
* emit<K extends keyof MyEvents>(event: K, ...args: Parameters<MyEvents[K]>): boolean;
|
|
28
|
+
* listeners<K extends keyof MyEvents>(event: K): MyEvents[K][];
|
|
29
|
+
* rawListeners<K extends keyof MyEvents>(event: K): MyEvents[K][];
|
|
30
|
+
* listenerCount<K extends keyof MyEvents>(event: K, listener?: MyEvents[K]): number;
|
|
31
|
+
* }} ICustomEventEmitter
|
|
32
|
+
*/
|
|
33
|
+
//# sourceMappingURL=EventEmitter.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitter.d.mts","sourceRoot":"","sources":["../../../src/v1/jsdoc/EventEmitter.mjs"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAInC,YAaG,mBAAmB,CAduC,QAAQ,SAA1D,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAW,IAC3D,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,WAAW,GAAG,cAAc,GAAG,eAAe,GAAG,iBAAiB,GAAG,qBAAqB,CAAC,GAAG;IACpN,EAAE,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7F,IAAI,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC/F,GAAG,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC9F,WAAW,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtG,cAAc,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACzG,kBAAkB,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACvF,eAAe,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC1G,mBAAmB,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC9G,IAAI,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IACpF,SAAS,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,YAAY,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,aAAa,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;CACnF,CAAqB;AAfzB;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
/**
|
|
3
|
+
* @template {Record<string | symbol, (...args: any[]) => any>} MyEvents
|
|
4
|
+
* @typedef {Omit<EventEmitter, 'on' | 'off' | 'emit' | 'once' | 'addListener' | 'removeListener' | 'removeAllListeners' | 'listeners' | 'rawListeners' | 'listenerCount' | 'prependListener' | 'prependOnceListener'> & {
|
|
5
|
+
* on<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
6
|
+
* once<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
7
|
+
* off<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
8
|
+
* addListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
9
|
+
* removeListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
10
|
+
* removeAllListeners<K extends keyof MyEvents>(event?: K): ICustomEventEmitter<MyEvents>;
|
|
11
|
+
* prependListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
12
|
+
* prependOnceListener<K extends keyof MyEvents>(event: K, listener: MyEvents[K]): ICustomEventEmitter<MyEvents>;
|
|
13
|
+
* emit<K extends keyof MyEvents>(event: K, ...args: Parameters<MyEvents[K]>): boolean;
|
|
14
|
+
* listeners<K extends keyof MyEvents>(event: K): MyEvents[K][];
|
|
15
|
+
* rawListeners<K extends keyof MyEvents>(event: K): MyEvents[K][];
|
|
16
|
+
* listenerCount<K extends keyof MyEvents>(event: K, listener?: MyEvents[K]): number;
|
|
17
|
+
* }} ICustomEventEmitter
|
|
18
|
+
*/
|
|
@@ -1,38 +1,93 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @fileoverview Array comparison utility.
|
|
4
|
+
* @fileoverview Array comparison utility with deep object diffing capabilities.
|
|
5
5
|
* @module TinyArrayComparator
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* @template
|
|
9
|
+
* @template Item
|
|
10
|
+
* @typedef {Object} HashEntry
|
|
11
|
+
* @property {Item} item - The original item stored in the map.
|
|
12
|
+
* @property {string} hash - The calculated hash representing the item's value.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
// STRUCTURAL TRANSFORMATION & TYPE DERIVATION:
|
|
16
|
+
// Here we remove 'any' and use 'Partial<Item>' and Mapped Types.
|
|
17
|
+
// VSCode/Intellisense will now know exactly which keys exist within 'added', 'deleted', and 'modified',
|
|
18
|
+
// deriving the types directly from the data structure you pass to the class.
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @template Item
|
|
22
|
+
* @typedef {Object} ObjectDiff
|
|
23
|
+
* @property {Partial<Item>} added - Properties added in the new object.
|
|
24
|
+
* @property {Partial<Item>} deleted - Properties removed from the old object.
|
|
25
|
+
* @property {Partial<{ [K in keyof Item]: { oldValue: Item[K], newValue: Item[K] } }>} modified - Properties that changed value.
|
|
26
|
+
* @property {Partial<{ [K in keyof Item]: ObjectDiff<Item[K]> }>} nested - Nested differences for nested objects.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
// ADVANCED PATTERN MATCHING:
|
|
30
|
+
// We use a discriminated union (status) so the IDE knows that 'oldItem' and 'details'
|
|
31
|
+
// only make sense (or are more relevant) in contexts where the change requires it.
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @template Item
|
|
35
|
+
* @typedef {Object} DiffResult
|
|
36
|
+
* @property {Item} item - The item that was affected.
|
|
37
|
+
* @property {Item} [oldItem] - The original item before the change (only for 'edited' status).
|
|
38
|
+
* @property {'added'|'deleted'|'edited'} status - The nature of the change.
|
|
39
|
+
* @property {ObjectDiff<Item>} [details] - Detailed property changes (only if status is 'edited' and deepComparison is enabled).
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @template Item
|
|
10
44
|
* @typedef {Object} InternalState
|
|
11
45
|
* Holds the internal tracking variables during the comparison process.
|
|
12
|
-
* @property {Map<string,
|
|
13
|
-
* @property {
|
|
46
|
+
* @property {Map<string|number, HashEntry<Item>>} oldItemsMap - A map storing the identity key as the key and the hash entry as the value.
|
|
47
|
+
* @property {Array<DiffResult<Item>>} affectedItems - The final array that collects added, deleted, or edited items.
|
|
14
48
|
*/
|
|
15
49
|
|
|
16
50
|
/**
|
|
17
|
-
* The final array that collects added or
|
|
18
|
-
* @template
|
|
19
|
-
* @typedef {Array<
|
|
51
|
+
* The final array that collects added, deleted, or edited items.
|
|
52
|
+
* @template Item
|
|
53
|
+
* @typedef {Array<DiffResult<Item>>} AffectedItems
|
|
20
54
|
*/
|
|
21
55
|
|
|
56
|
+
// ZERO-REDUNDANCY RULE:
|
|
57
|
+
// If 'Item' is a known object, 'idKey' will suggest the valid keys of that object (keyof Item).
|
|
58
|
+
// The '(string & {})' is an advanced trick to allow the user to type other strings if the base type is dynamic,
|
|
59
|
+
// without losing autocomplete for the known keys.
|
|
60
|
+
|
|
22
61
|
/**
|
|
23
|
-
*
|
|
62
|
+
* Options to configure the comparator.
|
|
63
|
+
* @template Item
|
|
64
|
+
* @typedef {Object} ComparatorOptions
|
|
65
|
+
* @property {keyof Item | (string & {})} [idKey='id'] - The property name used as a unique identifier for objects to detect edits.
|
|
66
|
+
* @property {boolean} [deepComparison=true] - If true, provides detailed property-level diffs for edited objects.
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Compares two arrays efficiently by hashing their items to detect additions, deletions, and edits.
|
|
24
71
|
* @template {any} ArrayItem
|
|
25
72
|
*/
|
|
26
73
|
class TinyArrayComparator {
|
|
27
74
|
/**
|
|
28
75
|
* Generates a simple 32-bit integer hash converted to a base36 string.
|
|
29
|
-
* @param {any} item - The item to be hashed
|
|
76
|
+
* @param {any} item - The item to be hashed.
|
|
30
77
|
* @returns {string} The unique hash representing the item's value.
|
|
78
|
+
* @throws {TypeError} Throws a TypeError if the item cannot be stringified due to circular references.
|
|
31
79
|
*/
|
|
32
80
|
static generateHash(item) {
|
|
33
|
-
|
|
34
|
-
|
|
81
|
+
let stringified;
|
|
82
|
+
try {
|
|
83
|
+
stringified = typeof item === 'object' && item !== null ? JSON.stringify(item) : String(item);
|
|
84
|
+
} catch (error) {
|
|
85
|
+
throw new TypeError(
|
|
86
|
+
'Failed to stringify item for hashing. Ensure the object does not have circular references.',
|
|
87
|
+
);
|
|
88
|
+
}
|
|
35
89
|
|
|
90
|
+
let hash = 0;
|
|
36
91
|
for (let i = 0, len = stringified.length; i < len; i++) {
|
|
37
92
|
const char = stringified.charCodeAt(i);
|
|
38
93
|
hash = (hash << 5) - hash + char;
|
|
@@ -48,6 +103,55 @@ class TinyArrayComparator {
|
|
|
48
103
|
*/
|
|
49
104
|
#oldArray = [];
|
|
50
105
|
|
|
106
|
+
/**
|
|
107
|
+
* The key used to track identity of an object (e.g., 'id', 'uuid').
|
|
108
|
+
* @type {string|null}
|
|
109
|
+
*/
|
|
110
|
+
#idKey = null;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Detects whether deep comparison is enabled.
|
|
114
|
+
* @type {boolean}
|
|
115
|
+
*/
|
|
116
|
+
#deepComparison = true;
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Gets the current identity key.
|
|
120
|
+
* @returns {string|null}
|
|
121
|
+
*/
|
|
122
|
+
get idKey() {
|
|
123
|
+
return this.#idKey;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Sets the identity key used for object comparison.
|
|
128
|
+
* @param {string|null} value - The property name to use as an identifier.
|
|
129
|
+
* @throws {TypeError} Throws a TypeError if the value is not a string.
|
|
130
|
+
*/
|
|
131
|
+
set idKey(value) {
|
|
132
|
+
if (value !== null && typeof value !== 'string')
|
|
133
|
+
throw new TypeError('The idKey must be a string or null.');
|
|
134
|
+
this.#idKey = value;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Gets whether deep comparison is enabled.
|
|
139
|
+
* @returns {boolean}
|
|
140
|
+
*/
|
|
141
|
+
get deepComparison() {
|
|
142
|
+
return this.#deepComparison;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Sets whether deep comparison is enabled.
|
|
147
|
+
* @param {boolean} value - The configuration value.
|
|
148
|
+
*/
|
|
149
|
+
set deepComparison(value) {
|
|
150
|
+
if (typeof value !== 'boolean')
|
|
151
|
+
throw new TypeError('The deepComparison option must be a boolean.');
|
|
152
|
+
this.#deepComparison = value;
|
|
153
|
+
}
|
|
154
|
+
|
|
51
155
|
/**
|
|
52
156
|
* Gets the current base array used for comparisons.
|
|
53
157
|
* @returns {ArrayItem[]} The current initial state of the array.
|
|
@@ -68,16 +172,25 @@ class TinyArrayComparator {
|
|
|
68
172
|
}
|
|
69
173
|
|
|
70
174
|
/**
|
|
71
|
-
* Initializes the comparator with an optional base array.
|
|
175
|
+
* Initializes the comparator with an optional base array and options.
|
|
72
176
|
* @param {ArrayItem[]} [oldArray] - The initial state of the array to be stored.
|
|
177
|
+
* @param {ComparatorOptions<ArrayItem>} [options={}] - Configuration options for the comparator.
|
|
73
178
|
*/
|
|
74
|
-
constructor(oldArray) {
|
|
179
|
+
constructor(oldArray, options = {}) {
|
|
75
180
|
if (typeof oldArray !== 'undefined') this.oldArray = oldArray;
|
|
181
|
+
|
|
182
|
+
if (typeof options.idKey === 'string') {
|
|
183
|
+
this.idKey = options.idKey;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (typeof options.deepComparison === 'boolean') {
|
|
187
|
+
this.deepComparison = options.deepComparison;
|
|
188
|
+
}
|
|
76
189
|
}
|
|
77
190
|
|
|
78
191
|
/**
|
|
79
192
|
* Proxy to generates a hash converted to a string.
|
|
80
|
-
* @param {ArrayItem} item - The item to be hashed
|
|
193
|
+
* @param {ArrayItem} item - The item to be hashed.
|
|
81
194
|
* @returns {string} The unique hash representing the item's value.
|
|
82
195
|
* @private
|
|
83
196
|
*/
|
|
@@ -86,7 +199,70 @@ class TinyArrayComparator {
|
|
|
86
199
|
}
|
|
87
200
|
|
|
88
201
|
/**
|
|
89
|
-
*
|
|
202
|
+
* Recursively compares two objects to find differences.
|
|
203
|
+
* @param {Object} oldObj - The original object.
|
|
204
|
+
* @param {Object} newObj - The modified object.
|
|
205
|
+
* @returns {ObjectDiff<ArrayItem>} A structured object containing the differences.
|
|
206
|
+
*/
|
|
207
|
+
#getDeepDiff(oldObj, newObj) {
|
|
208
|
+
/** @type {ObjectDiff<ArrayItem>} */
|
|
209
|
+
const diff = {
|
|
210
|
+
added: {},
|
|
211
|
+
deleted: {},
|
|
212
|
+
modified: {},
|
|
213
|
+
nested: {},
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
const allKeys = new Set([...Object.keys(oldObj), ...Object.keys(newObj)]);
|
|
217
|
+
|
|
218
|
+
for (const key of allKeys) {
|
|
219
|
+
// @ts-ignore
|
|
220
|
+
const oldVal = oldObj[key];
|
|
221
|
+
// @ts-ignore
|
|
222
|
+
const newVal = newObj[key];
|
|
223
|
+
|
|
224
|
+
if (!(key in oldObj)) {
|
|
225
|
+
// Key exists in new object but not in old
|
|
226
|
+
// @ts-ignore
|
|
227
|
+
diff.added[key] = newVal;
|
|
228
|
+
} else if (!(key in newObj)) {
|
|
229
|
+
// Key exists in old object but not in new
|
|
230
|
+
// @ts-ignore
|
|
231
|
+
diff.deleted[key] = oldVal;
|
|
232
|
+
} else if (
|
|
233
|
+
typeof oldVal === 'object' &&
|
|
234
|
+
oldVal !== null &&
|
|
235
|
+
typeof newVal === 'object' &&
|
|
236
|
+
newVal !== null &&
|
|
237
|
+
!Array.isArray(oldVal) &&
|
|
238
|
+
!Array.isArray(newObj)
|
|
239
|
+
) {
|
|
240
|
+
// Both are objects, recurse
|
|
241
|
+
const nestedDiff = this.#getDeepDiff(oldVal, newVal);
|
|
242
|
+
// Only add nested if it actually contains differences
|
|
243
|
+
if (
|
|
244
|
+
Object.keys(nestedDiff.added).length > 0 ||
|
|
245
|
+
Object.keys(nestedDiff.deleted).length > 0 ||
|
|
246
|
+
Object.keys(nestedDiff.modified).length > 0 ||
|
|
247
|
+
Object.keys(nestedDiff.nested).length > 0
|
|
248
|
+
) {
|
|
249
|
+
// @ts-ignore
|
|
250
|
+
diff.nested[key] = nestedDiff;
|
|
251
|
+
}
|
|
252
|
+
} else if (oldVal !== newVal) {
|
|
253
|
+
// Values are different and not objects (or one is an array)
|
|
254
|
+
// @ts-ignore
|
|
255
|
+
diff.modified[key] = {
|
|
256
|
+
oldValue: oldVal,
|
|
257
|
+
newValue: newVal,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return diff;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Compares the stored older array with a newer array and identifies added, deleted, or edited items.
|
|
90
266
|
*
|
|
91
267
|
* @param {ArrayItem[]} newArray - The modified state of the array.
|
|
92
268
|
* @returns {AffectedItems<ArrayItem>} An array containing the affected items and their status.
|
|
@@ -104,26 +280,65 @@ class TinyArrayComparator {
|
|
|
104
280
|
|
|
105
281
|
// Step 1: Hash and store all items from the first array
|
|
106
282
|
for (const item of this.#oldArray) {
|
|
107
|
-
const
|
|
108
|
-
|
|
283
|
+
const hash = this._generateHash(item);
|
|
284
|
+
|
|
285
|
+
// Identity is determined by the idKey. Otherwise, it relies purely on the hash.
|
|
286
|
+
const identityKey =
|
|
287
|
+
this.#idKey !== null && item !== null && typeof item === 'object' && this.#idKey in item
|
|
288
|
+
? // @ts-ignore
|
|
289
|
+
item[this.#idKey]
|
|
290
|
+
: hash;
|
|
291
|
+
|
|
292
|
+
state.oldItemsMap.set(identityKey, { item, hash });
|
|
109
293
|
}
|
|
110
294
|
|
|
111
|
-
// Step 2: Iterate through the second array to find matches or additions
|
|
295
|
+
// Step 2: Iterate through the second array to find matches, edits or additions
|
|
112
296
|
for (const item of newArray) {
|
|
113
|
-
const
|
|
297
|
+
const hash = this._generateHash(item);
|
|
298
|
+
|
|
299
|
+
const identityKey =
|
|
300
|
+
this.#idKey !== null && item !== null && typeof item === 'object' && this.#idKey in item
|
|
301
|
+
? // @ts-ignore
|
|
302
|
+
item[this.#idKey]
|
|
303
|
+
: hash;
|
|
304
|
+
|
|
305
|
+
const oldData = state.oldItemsMap.get(identityKey);
|
|
306
|
+
if (oldData) {
|
|
307
|
+
if (oldData.hash === hash) {
|
|
308
|
+
// Item exists and the content is identical. Unchanged.
|
|
309
|
+
state.oldItemsMap.delete(identityKey);
|
|
310
|
+
} else {
|
|
311
|
+
// Item has the same identity but a different hash. It was edited.
|
|
312
|
+
/** @type {DiffResult<ArrayItem>} */
|
|
313
|
+
const diffResult = {
|
|
314
|
+
item: item,
|
|
315
|
+
oldItem: oldData.item,
|
|
316
|
+
status: 'edited',
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
// Perform deep comparison if enabled and items are objects
|
|
320
|
+
if (
|
|
321
|
+
this.#deepComparison &&
|
|
322
|
+
typeof item === 'object' &&
|
|
323
|
+
item !== null &&
|
|
324
|
+
typeof oldData.item === 'object' &&
|
|
325
|
+
oldData.item !== null
|
|
326
|
+
) {
|
|
327
|
+
diffResult.details = this.#getDeepDiff(oldData.item, item);
|
|
328
|
+
}
|
|
114
329
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
330
|
+
state.affectedItems.push(diffResult);
|
|
331
|
+
state.oldItemsMap.delete(identityKey);
|
|
332
|
+
}
|
|
118
333
|
} else {
|
|
119
|
-
// Item was not in the old array
|
|
334
|
+
// Item identity was not found in the old array. It is an addition.
|
|
120
335
|
state.affectedItems.push({ item, status: 'added' });
|
|
121
336
|
}
|
|
122
337
|
}
|
|
123
338
|
|
|
124
339
|
// Step 3: Any item left in the oldItemsMap was not present in the new array (deleted)
|
|
125
|
-
for (const
|
|
126
|
-
state.affectedItems.push({ item, status: 'deleted' });
|
|
340
|
+
for (const oldData of state.oldItemsMap.values()) {
|
|
341
|
+
state.affectedItems.push({ item: oldData.item, status: 'deleted' });
|
|
127
342
|
}
|
|
128
343
|
|
|
129
344
|
return state.affectedItems;
|
|
@@ -1,45 +1,152 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview Array comparison utility.
|
|
2
|
+
* @fileoverview Array comparison utility with deep object diffing capabilities.
|
|
3
3
|
* @module TinyArrayComparator
|
|
4
4
|
*/
|
|
5
|
-
export type
|
|
5
|
+
export type HashEntry<Item> = {
|
|
6
6
|
/**
|
|
7
|
-
* -
|
|
7
|
+
* - The original item stored in the map.
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
item: Item;
|
|
10
10
|
/**
|
|
11
|
-
* - The
|
|
11
|
+
* - The calculated hash representing the item's value.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
hash: string;
|
|
14
|
+
};
|
|
15
|
+
export type ObjectDiff<Item> = {
|
|
16
|
+
/**
|
|
17
|
+
* - Properties added in the new object.
|
|
18
|
+
*/
|
|
19
|
+
added: Partial<Item>;
|
|
20
|
+
/**
|
|
21
|
+
* - Properties removed from the old object.
|
|
22
|
+
*/
|
|
23
|
+
deleted: Partial<Item>;
|
|
24
|
+
/**
|
|
25
|
+
* - Properties that changed value.
|
|
26
|
+
*/
|
|
27
|
+
modified: Partial<{ [K in keyof Item]: {
|
|
28
|
+
oldValue: Item[K];
|
|
29
|
+
newValue: Item[K];
|
|
30
|
+
}; }>;
|
|
31
|
+
/**
|
|
32
|
+
* - Nested differences for nested objects.
|
|
33
|
+
*/
|
|
34
|
+
nested: Partial<{ [K in keyof Item]: ObjectDiff<Item[K]>; }>;
|
|
35
|
+
};
|
|
36
|
+
export type DiffResult<Item> = {
|
|
37
|
+
/**
|
|
38
|
+
* - The item that was affected.
|
|
39
|
+
*/
|
|
40
|
+
item: Item;
|
|
41
|
+
/**
|
|
42
|
+
* - The original item before the change (only for 'edited' status).
|
|
43
|
+
*/
|
|
44
|
+
oldItem?: Item;
|
|
45
|
+
/**
|
|
46
|
+
* - The nature of the change.
|
|
47
|
+
*/
|
|
48
|
+
status: 'added' | 'deleted' | 'edited';
|
|
49
|
+
/**
|
|
50
|
+
* - Detailed property changes (only if status is 'edited' and deepComparison is enabled).
|
|
51
|
+
*/
|
|
52
|
+
details?: ObjectDiff<Item>;
|
|
53
|
+
};
|
|
54
|
+
export type InternalState<Item> = {
|
|
55
|
+
/**
|
|
56
|
+
* - A map storing the identity key as the key and the hash entry as the value.
|
|
57
|
+
*/
|
|
58
|
+
oldItemsMap: Map<string | number, HashEntry<Item>>;
|
|
59
|
+
/**
|
|
60
|
+
* - The final array that collects added, deleted, or edited items.
|
|
61
|
+
*/
|
|
62
|
+
affectedItems: Array<DiffResult<Item>>;
|
|
63
|
+
};
|
|
64
|
+
export type AffectedItems<Item> = Array<DiffResult<Item>>;
|
|
65
|
+
export type ComparatorOptions<Item> = {
|
|
66
|
+
/**
|
|
67
|
+
* - The property name used as a unique identifier for objects to detect edits.
|
|
68
|
+
*/
|
|
69
|
+
idKey?: keyof Item | (string & {});
|
|
70
|
+
/**
|
|
71
|
+
* - If true, provides detailed property-level diffs for edited objects.
|
|
72
|
+
*/
|
|
73
|
+
deepComparison?: boolean;
|
|
14
74
|
};
|
|
15
|
-
export type AffectedItems<ArrayItem extends any> = Array<{
|
|
16
|
-
item: ArrayItem;
|
|
17
|
-
status: 'added' | 'deleted';
|
|
18
|
-
}>;
|
|
19
75
|
/**
|
|
20
|
-
* @template
|
|
76
|
+
* @template Item
|
|
77
|
+
* @typedef {Object} HashEntry
|
|
78
|
+
* @property {Item} item - The original item stored in the map.
|
|
79
|
+
* @property {string} hash - The calculated hash representing the item's value.
|
|
80
|
+
*/
|
|
81
|
+
/**
|
|
82
|
+
* @template Item
|
|
83
|
+
* @typedef {Object} ObjectDiff
|
|
84
|
+
* @property {Partial<Item>} added - Properties added in the new object.
|
|
85
|
+
* @property {Partial<Item>} deleted - Properties removed from the old object.
|
|
86
|
+
* @property {Partial<{ [K in keyof Item]: { oldValue: Item[K], newValue: Item[K] } }>} modified - Properties that changed value.
|
|
87
|
+
* @property {Partial<{ [K in keyof Item]: ObjectDiff<Item[K]> }>} nested - Nested differences for nested objects.
|
|
88
|
+
*/
|
|
89
|
+
/**
|
|
90
|
+
* @template Item
|
|
91
|
+
* @typedef {Object} DiffResult
|
|
92
|
+
* @property {Item} item - The item that was affected.
|
|
93
|
+
* @property {Item} [oldItem] - The original item before the change (only for 'edited' status).
|
|
94
|
+
* @property {'added'|'deleted'|'edited'} status - The nature of the change.
|
|
95
|
+
* @property {ObjectDiff<Item>} [details] - Detailed property changes (only if status is 'edited' and deepComparison is enabled).
|
|
96
|
+
*/
|
|
97
|
+
/**
|
|
98
|
+
* @template Item
|
|
21
99
|
* @typedef {Object} InternalState
|
|
22
100
|
* Holds the internal tracking variables during the comparison process.
|
|
23
|
-
* @property {Map<string,
|
|
24
|
-
* @property {
|
|
101
|
+
* @property {Map<string|number, HashEntry<Item>>} oldItemsMap - A map storing the identity key as the key and the hash entry as the value.
|
|
102
|
+
* @property {Array<DiffResult<Item>>} affectedItems - The final array that collects added, deleted, or edited items.
|
|
25
103
|
*/
|
|
26
104
|
/**
|
|
27
|
-
* The final array that collects added or
|
|
28
|
-
* @template
|
|
29
|
-
* @typedef {Array<
|
|
105
|
+
* The final array that collects added, deleted, or edited items.
|
|
106
|
+
* @template Item
|
|
107
|
+
* @typedef {Array<DiffResult<Item>>} AffectedItems
|
|
108
|
+
*/
|
|
109
|
+
/**
|
|
110
|
+
* Options to configure the comparator.
|
|
111
|
+
* @template Item
|
|
112
|
+
* @typedef {Object} ComparatorOptions
|
|
113
|
+
* @property {keyof Item | (string & {})} [idKey='id'] - The property name used as a unique identifier for objects to detect edits.
|
|
114
|
+
* @property {boolean} [deepComparison=true] - If true, provides detailed property-level diffs for edited objects.
|
|
30
115
|
*/
|
|
31
116
|
/**
|
|
32
|
-
* Compares two arrays efficiently by hashing their items to detect additions and
|
|
117
|
+
* Compares two arrays efficiently by hashing their items to detect additions, deletions, and edits.
|
|
33
118
|
* @template {any} ArrayItem
|
|
34
119
|
*/
|
|
35
120
|
declare class TinyArrayComparator<ArrayItem extends any> {
|
|
36
121
|
#private;
|
|
37
122
|
/**
|
|
38
123
|
* Generates a simple 32-bit integer hash converted to a base36 string.
|
|
39
|
-
* @param {any} item - The item to be hashed
|
|
124
|
+
* @param {any} item - The item to be hashed.
|
|
40
125
|
* @returns {string} The unique hash representing the item's value.
|
|
126
|
+
* @throws {TypeError} Throws a TypeError if the item cannot be stringified due to circular references.
|
|
41
127
|
*/
|
|
42
128
|
static generateHash(item: any): string;
|
|
129
|
+
/**
|
|
130
|
+
* Gets the current identity key.
|
|
131
|
+
* @returns {string|null}
|
|
132
|
+
*/
|
|
133
|
+
get idKey(): string | null;
|
|
134
|
+
/**
|
|
135
|
+
* Sets the identity key used for object comparison.
|
|
136
|
+
* @param {string|null} value - The property name to use as an identifier.
|
|
137
|
+
* @throws {TypeError} Throws a TypeError if the value is not a string.
|
|
138
|
+
*/
|
|
139
|
+
set idKey(value: string | null);
|
|
140
|
+
/**
|
|
141
|
+
* Gets whether deep comparison is enabled.
|
|
142
|
+
* @returns {boolean}
|
|
143
|
+
*/
|
|
144
|
+
get deepComparison(): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Sets whether deep comparison is enabled.
|
|
147
|
+
* @param {boolean} value - The configuration value.
|
|
148
|
+
*/
|
|
149
|
+
set deepComparison(value: boolean);
|
|
43
150
|
/**
|
|
44
151
|
* Gets the current base array used for comparisons.
|
|
45
152
|
* @returns {ArrayItem[]} The current initial state of the array.
|
|
@@ -52,19 +159,20 @@ declare class TinyArrayComparator<ArrayItem extends any> {
|
|
|
52
159
|
*/
|
|
53
160
|
set oldArray(oldArray: ArrayItem[]);
|
|
54
161
|
/**
|
|
55
|
-
* Initializes the comparator with an optional base array.
|
|
162
|
+
* Initializes the comparator with an optional base array and options.
|
|
56
163
|
* @param {ArrayItem[]} [oldArray] - The initial state of the array to be stored.
|
|
164
|
+
* @param {ComparatorOptions<ArrayItem>} [options={}] - Configuration options for the comparator.
|
|
57
165
|
*/
|
|
58
|
-
constructor(oldArray?: ArrayItem[]);
|
|
166
|
+
constructor(oldArray?: ArrayItem[], options?: ComparatorOptions<ArrayItem>);
|
|
59
167
|
/**
|
|
60
168
|
* Proxy to generates a hash converted to a string.
|
|
61
|
-
* @param {ArrayItem} item - The item to be hashed
|
|
169
|
+
* @param {ArrayItem} item - The item to be hashed.
|
|
62
170
|
* @returns {string} The unique hash representing the item's value.
|
|
63
171
|
* @private
|
|
64
172
|
*/
|
|
65
173
|
private _generateHash;
|
|
66
174
|
/**
|
|
67
|
-
* Compares the stored older array with a newer array and identifies
|
|
175
|
+
* Compares the stored older array with a newer array and identifies added, deleted, or edited items.
|
|
68
176
|
*
|
|
69
177
|
* @param {ArrayItem[]} newArray - The modified state of the array.
|
|
70
178
|
* @returns {AffectedItems<ArrayItem>} An array containing the affected items and their status.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TinyArrayComparator.d.mts","sourceRoot":"","sources":["../../../../src/v1/libs/array/TinyArrayComparator.mjs"],"names":[],"mappings":"AAAA;;;GAGG;AAIA,YAAkB,
|
|
1
|
+
{"version":3,"file":"TinyArrayComparator.d.mts","sourceRoot":"","sources":["../../../../src/v1/libs/array/TinyArrayComparator.mjs"],"names":[],"mappings":"AAAA;;;GAGG;AAIA,YAAkB,SAAS,CADjB,IAAI,IAEd;;;;IAAiB,IAAI,EAAV,IAAI,CACf;;;;IAAmB,IAAI,EAAZ,MAAM,CACnB;CAAA,CAAA;AASE,YAAkB,UAAU,CADlB,IAAI,IAEd;;;;IAA0B,KAAK,EAApB,OAAO,CAAC,IAAI,CAAC,CACxB;;;;IAA0B,OAAO,EAAtB,OAAO,CAAC,IAAI,CAAC,CACxB;;;;IAAqF,QAAQ,EAAlF,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;KAAE,GAAE,CAAC,CACnF;;;;IAAgE,MAAM,EAA3D,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAChE;CAAA,CAAA;AAQE,YAAkB,UAAU,CADlB,IAAI,IAEd;;;;IAAiB,IAAI,EAAV,IAAI,CACf;;;;IAAkB,OAAO,AAAzB,CACA,EADW,IAAI,CACf;;;;IAAuC,MAAM,EAAlC,OAAO,GAAC,SAAS,GAAC,QAAQ,CACrC;;;;IAA8B,OAAO,AAArC,CACF,EADa,UAAU,CAAC,IAAI,CAAC,CAC7B;CAAA,CAAA;AAIE,YAAkB,aAAa,CADrB,IAAI,IAGd;;;;IAAgD,WAAW,EAAhD,GAAG,CAAC,MAAM,GAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAC9C;;;;IAAoC,aAAa,EAAtC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CACpC;CAAA,CAAA;AAKE,YAAmC,aAAa,CADtC,IAAI,IACJ,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAe;AAWhD,YAAkB,iBAAiB,CADzB,IAAI,IAEd;;;;IAAwC,KAAK,AAA7C,CACA,EADW,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CACrC;;;;IAAqB,cAAc,AAAnC,CACF,EADa,OAAO,CACpB;CAAA,CAAA;AA3DD;;;;;GAKG;AAOH;;;;;;;GAOG;AAMH;;;;;;;GAOG;AAEH;;;;;;GAMG;AAEH;;;;GAIG;AAOH;;;;;;GAMG;AAEH;;;GAGG;AACH,cAAM,mBAAmB,CAFN,SAAS,SAAd,GAAc;;IAG1B;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAJb,GAIa,GAHX,MAAM,CAqBlB;IAoBD;;;OAGG;IACH,IAAI,KAAK,IAFI,MAAM,GAAC,IAAI,CAIvB;IAED;;;;OAIG;IACH,IAAI,KAAK,CAAC,KAAK,EAHJ,MAAM,GAAC,IAGH,EAId;IAED;;;OAGG;IACH,IAAI,cAAc,IAFL,OAAO,CAInB;IAED;;;OAGG;IACH,IAAI,cAAc,CAAC,KAAK,EAFb,OAEa,EAIvB;IAED;;;OAGG;IACH,IAAI,QAAQ,IAFC,SAAS,EAAE,CAIvB;IAED;;;;OAIG;IACH,IAAI,QAAQ,CAAC,QAAQ,EAHV,SAAS,EAGC,EAIpB;IAED;;;;OAIG;IACH,YAAY,QAAQ,AAHjB,CACA,EADQ,SAAS,EAGA,EAAE,OAAO,AAF1B,CACF,EADU,iBAAiB,CAAC,SAAS,CAEJ,EAUjC;IAED;;;;;OAKG;YACH,aAAa;IAmEb;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAJL,SAAS,EAIJ,GAHH,aAAa,CAAC,SAAS,CAAC,CA6EpC;CACF;eAEc,mBAAmB"}
|