tiny-essentials 1.28.19 → 1.29.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/changelog/1/28/19.md +24 -0
- package/changelog/1/29/0.md +58 -0
- package/changelog/1/29/1.md +11 -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/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 +30 -4
- package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts +5 -2
- package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts.map +1 -1
- package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs +29 -5
- 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 +101 -0
- package/docs/v1/README.md +113 -15
- 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 +565 -0
- package/docs/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.md +19 -7
- 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 +340 -22
- package/types/EventEmitter.d.ts +48 -0
- package/dist/v1/libs/text/TinyI18.d.mts.map +0 -1
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var objChecker = require('../../../../basics/objChecker.cjs');
|
|
4
|
+
var Glob = require('../../../../regexp/Glob.cjs');
|
|
5
|
+
var TinyServiceWorkerEngine = require('../TinyServiceWorkerEngine.cjs');
|
|
6
|
+
|
|
7
|
+
const { TinyPluginLayer } = TinyServiceWorkerEngine;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Configuration options for the GlobBypassPlugin.
|
|
11
|
+
* @typedef {Object} GlobBypassOptions
|
|
12
|
+
* @property {string[]} patterns - Array of glob patterns (e.g., ['\*\*\/*.js', '\*\*\/\*.{css,html}']) that, when matched, make the request bypass the router validation.
|
|
13
|
+
* @property {string[]} [exclude] - Array of glob patterns to ignore (e.g., ['**\/sw.js']).
|
|
14
|
+
* @property {boolean} [sameOriginOnly=true] - When true, only same-origin requests are evaluated.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* A plugin for TinyServiceWorkerEngine that bypasses the router validation for
|
|
19
|
+
* every request whose pathname matches one of the provided glob patterns.
|
|
20
|
+
*
|
|
21
|
+
* @type {import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'GlobBypass', '1.0.0', [GlobBypassOptions]>}
|
|
22
|
+
* @throws {TypeError} If the engine is invalid or if the provided options do not match the required schema.
|
|
23
|
+
*/
|
|
24
|
+
const GlobBypassPlugin = (instance, options) => {
|
|
25
|
+
const engine = instance.engine;
|
|
26
|
+
instance.id = 'GlobBypass';
|
|
27
|
+
instance.version = '1.0.0';
|
|
28
|
+
instance.description = 'Glob-based router bypass detector.';
|
|
29
|
+
instance.authors = ['JasminDreasond'];
|
|
30
|
+
instance.contributors = ['JasminDreasond'];
|
|
31
|
+
instance.categories = ['router-validator'];
|
|
32
|
+
instance.tags = ['glob', 'regex', 'bypass', 'router'];
|
|
33
|
+
|
|
34
|
+
// 1. Validation
|
|
35
|
+
if (!(engine instanceof TinyServiceWorkerEngine)) {
|
|
36
|
+
throw new TypeError('Plugin requires a TinyServiceWorkerEngine instance to function.');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (!objChecker.isJsonObject(options)) {
|
|
40
|
+
throw new TypeError('[GlobBypassPlugin] Options must be a non-null object.');
|
|
41
|
+
}
|
|
42
|
+
if (!Array.isArray(options.patterns) || !options.patterns.every((p) => typeof p === 'string')) {
|
|
43
|
+
throw new TypeError('[GlobBypassPlugin] options.patterns must be an array of strings.');
|
|
44
|
+
}
|
|
45
|
+
if (
|
|
46
|
+
typeof options.exclude !== 'undefined' &&
|
|
47
|
+
(!Array.isArray(options.exclude) || !options.exclude.every((p) => typeof p === 'string'))
|
|
48
|
+
) {
|
|
49
|
+
throw new TypeError('[GlobBypassPlugin] options.exclude must be an array of strings.');
|
|
50
|
+
}
|
|
51
|
+
if (
|
|
52
|
+
typeof options.sameOriginOnly !== 'undefined' &&
|
|
53
|
+
typeof options.sameOriginOnly !== 'boolean'
|
|
54
|
+
) {
|
|
55
|
+
throw new TypeError('[GlobBypassPlugin] options.sameOriginOnly must be a boolean.');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const { patterns, exclude, sameOriginOnly = true } = options;
|
|
59
|
+
|
|
60
|
+
// 2. Implementation
|
|
61
|
+
|
|
62
|
+
// Pre-compile exclusion patterns into Regex for performance
|
|
63
|
+
const excludeRegexes = (exclude || []).map((pattern) => Glob.compileGlobRegExp(pattern));
|
|
64
|
+
|
|
65
|
+
for (const pattern of patterns) {
|
|
66
|
+
const regex = Glob.compileGlobRegExp(pattern);
|
|
67
|
+
engine.addFetchRegExpListener(regex.source, (fetchObj, response) => {
|
|
68
|
+
if (sameOriginOnly && !fetchObj.isSameOrigin) {
|
|
69
|
+
return; // Skip cross-origin requests
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Check if the current URL matches any exclusion pattern
|
|
73
|
+
if (excludeRegexes.some((re) => re.test(fetchObj.url.pathname))) {
|
|
74
|
+
return; // Skip excluded requests
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Bypass the router validation for the matched request
|
|
78
|
+
instance.log('info', `File detected: ${fetchObj.url.toString()}`);
|
|
79
|
+
response.continueCheck = false;
|
|
80
|
+
response.needValidation = false;
|
|
81
|
+
response.code = 200;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return new TinyPluginLayer();
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
module.exports = GlobBypassPlugin;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
declare const TinyPluginLayer: typeof import("../../../plugin/TinyPlugin.mjs").TinyPluginLayer;
|
|
2
|
+
export type GlobBypassOptions = {
|
|
3
|
+
/**
|
|
4
|
+
* - Array of glob patterns (e.g., ['\*\*\/*.js', '\*\*\/\*.{css,html}']) that, when matched, make the request bypass the router validation.
|
|
5
|
+
*/
|
|
6
|
+
patterns: string[];
|
|
7
|
+
/**
|
|
8
|
+
* - Array of glob patterns to ignore (e.g., ['**\/sw.js']).
|
|
9
|
+
*/
|
|
10
|
+
exclude?: string[];
|
|
11
|
+
/**
|
|
12
|
+
* - When true, only same-origin requests are evaluated.
|
|
13
|
+
*/
|
|
14
|
+
sameOriginOnly?: boolean;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Configuration options for the GlobBypassPlugin.
|
|
18
|
+
* @typedef {Object} GlobBypassOptions
|
|
19
|
+
* @property {string[]} patterns - Array of glob patterns (e.g., ['\*\*\/*.js', '\*\*\/\*.{css,html}']) that, when matched, make the request bypass the router validation.
|
|
20
|
+
* @property {string[]} [exclude] - Array of glob patterns to ignore (e.g., ['**\/sw.js']).
|
|
21
|
+
* @property {boolean} [sameOriginOnly=true] - When true, only same-origin requests are evaluated.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* A plugin for TinyServiceWorkerEngine that bypasses the router validation for
|
|
25
|
+
* every request whose pathname matches one of the provided glob patterns.
|
|
26
|
+
*
|
|
27
|
+
* @type {import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'GlobBypass', '1.0.0', [GlobBypassOptions]>}
|
|
28
|
+
* @throws {TypeError} If the engine is invalid or if the provided options do not match the required schema.
|
|
29
|
+
*/
|
|
30
|
+
declare const GlobBypassPlugin: import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'GlobBypass', '1.0.0', [GlobBypassOptions]>;
|
|
31
|
+
export default GlobBypassPlugin;
|
|
32
|
+
//# sourceMappingURL=GlobBypassPlugin.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobBypassPlugin.d.mts","sourceRoot":"","sources":["../../../../../../../src/v1/libs/sw/service/plugins/GlobBypassPlugin.mjs"],"names":[],"mappings":"AAIA,QAAA,MAAQ,eAAe,iEAA4B,CAAC;AAIjD,YAAkB,iBAAiB,GACnC;;;;IAAqB,QAAQ,EAAlB,MAAM,EAAE,CACnB;;;;IAAsB,OAAO,AAA7B,CACA,EADW,MAAM,EAAE,CACnB;;;;IAAqB,cAAc,AAAnC,CACF,EADa,OAAO,CACpB;CAAA,CAAA;AAND;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,QAAA,MAAM,gBAAgB,EAHZ,OAAO,gCAAgC,EAAE,iBAAiB,CAAC,YAAY,CAAC,OAAO,eAAe,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAiEpJ,CAAC;eAEa,gBAAgB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { isJsonObject } from '../../../../basics/objChecker.mjs';
|
|
2
|
+
import { compileGlobRegExp } from '../../../../regexp/Glob.mjs';
|
|
3
|
+
import TinyServiceWorkerEngine from '../TinyServiceWorkerEngine.mjs';
|
|
4
|
+
const { TinyPluginLayer } = TinyServiceWorkerEngine;
|
|
5
|
+
/**
|
|
6
|
+
* Configuration options for the GlobBypassPlugin.
|
|
7
|
+
* @typedef {Object} GlobBypassOptions
|
|
8
|
+
* @property {string[]} patterns - Array of glob patterns (e.g., ['\*\*\/*.js', '\*\*\/\*.{css,html}']) that, when matched, make the request bypass the router validation.
|
|
9
|
+
* @property {string[]} [exclude] - Array of glob patterns to ignore (e.g., ['**\/sw.js']).
|
|
10
|
+
* @property {boolean} [sameOriginOnly=true] - When true, only same-origin requests are evaluated.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* A plugin for TinyServiceWorkerEngine that bypasses the router validation for
|
|
14
|
+
* every request whose pathname matches one of the provided glob patterns.
|
|
15
|
+
*
|
|
16
|
+
* @type {import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'GlobBypass', '1.0.0', [GlobBypassOptions]>}
|
|
17
|
+
* @throws {TypeError} If the engine is invalid or if the provided options do not match the required schema.
|
|
18
|
+
*/
|
|
19
|
+
const GlobBypassPlugin = (instance, options) => {
|
|
20
|
+
const engine = instance.engine;
|
|
21
|
+
instance.id = 'GlobBypass';
|
|
22
|
+
instance.version = '1.0.0';
|
|
23
|
+
instance.description = 'Glob-based router bypass detector.';
|
|
24
|
+
instance.authors = ['JasminDreasond'];
|
|
25
|
+
instance.contributors = ['JasminDreasond'];
|
|
26
|
+
instance.categories = ['router-validator'];
|
|
27
|
+
instance.tags = ['glob', 'regex', 'bypass', 'router'];
|
|
28
|
+
// 1. Validation
|
|
29
|
+
if (!(engine instanceof TinyServiceWorkerEngine)) {
|
|
30
|
+
throw new TypeError('Plugin requires a TinyServiceWorkerEngine instance to function.');
|
|
31
|
+
}
|
|
32
|
+
if (!isJsonObject(options)) {
|
|
33
|
+
throw new TypeError('[GlobBypassPlugin] Options must be a non-null object.');
|
|
34
|
+
}
|
|
35
|
+
if (!Array.isArray(options.patterns) || !options.patterns.every((p) => typeof p === 'string')) {
|
|
36
|
+
throw new TypeError('[GlobBypassPlugin] options.patterns must be an array of strings.');
|
|
37
|
+
}
|
|
38
|
+
if (typeof options.exclude !== 'undefined' &&
|
|
39
|
+
(!Array.isArray(options.exclude) || !options.exclude.every((p) => typeof p === 'string'))) {
|
|
40
|
+
throw new TypeError('[GlobBypassPlugin] options.exclude must be an array of strings.');
|
|
41
|
+
}
|
|
42
|
+
if (typeof options.sameOriginOnly !== 'undefined' &&
|
|
43
|
+
typeof options.sameOriginOnly !== 'boolean') {
|
|
44
|
+
throw new TypeError('[GlobBypassPlugin] options.sameOriginOnly must be a boolean.');
|
|
45
|
+
}
|
|
46
|
+
const { patterns, exclude, sameOriginOnly = true } = options;
|
|
47
|
+
// 2. Implementation
|
|
48
|
+
// Pre-compile exclusion patterns into Regex for performance
|
|
49
|
+
const excludeRegexes = (exclude || []).map((pattern) => compileGlobRegExp(pattern));
|
|
50
|
+
for (const pattern of patterns) {
|
|
51
|
+
const regex = compileGlobRegExp(pattern);
|
|
52
|
+
engine.addFetchRegExpListener(regex.source, (fetchObj, response) => {
|
|
53
|
+
if (sameOriginOnly && !fetchObj.isSameOrigin) {
|
|
54
|
+
return; // Skip cross-origin requests
|
|
55
|
+
}
|
|
56
|
+
// Check if the current URL matches any exclusion pattern
|
|
57
|
+
if (excludeRegexes.some((re) => re.test(fetchObj.url.pathname))) {
|
|
58
|
+
return; // Skip excluded requests
|
|
59
|
+
}
|
|
60
|
+
// Bypass the router validation for the matched request
|
|
61
|
+
instance.log('info', `File detected: ${fetchObj.url.toString()}`);
|
|
62
|
+
response.continueCheck = false;
|
|
63
|
+
response.needValidation = false;
|
|
64
|
+
response.code = 200;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return new TinyPluginLayer();
|
|
68
|
+
};
|
|
69
|
+
export default GlobBypassPlugin;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var objChecker = require('../../../../basics/objChecker.cjs');
|
|
4
|
+
var Glob = require('../../../../regexp/Glob.cjs');
|
|
5
|
+
var TinyServiceWorkerEngine = require('../TinyServiceWorkerEngine.cjs');
|
|
6
|
+
|
|
7
|
+
const { TinyPluginLayer } = TinyServiceWorkerEngine;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @typedef {Object} GlobCacheOptions
|
|
11
|
+
* @property {string[]} patterns - Array of glob patterns (e.g., ['\*\*\/\*.js', '\*\*\/\*.{css,html}']).
|
|
12
|
+
* @property {string[]} [exclude] - Array of glob patterns to ignore (e.g., ['\*\*\/sw.js']).
|
|
13
|
+
* @property {boolean} [sameOriginOnly=true]
|
|
14
|
+
* @property {string} cacheName - The name of the CacheStorage bucket to use.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* A plugin for TinyServiceWorkerEngine that implements runtime caching based on glob patterns.
|
|
19
|
+
* @type {import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'GlobCache', '1.0.0', [GlobCacheOptions]>}
|
|
20
|
+
* @throws {TypeError} If options or patterns are invalid.
|
|
21
|
+
*/
|
|
22
|
+
const GlobCachePlugin = (instance, options) => {
|
|
23
|
+
const engine = instance.engine;
|
|
24
|
+
instance.id = 'GlobCache';
|
|
25
|
+
instance.version = '1.0.0';
|
|
26
|
+
instance.description = 'The glob cache manager.';
|
|
27
|
+
instance.authors = ['JasminDreasond'];
|
|
28
|
+
instance.contributors = ['JasminDreasond'];
|
|
29
|
+
instance.categories = ['router-validator'];
|
|
30
|
+
instance.tags = ['glob', 'regex', 'cache'];
|
|
31
|
+
|
|
32
|
+
// 1. Validation
|
|
33
|
+
if (!(engine instanceof TinyServiceWorkerEngine)) {
|
|
34
|
+
throw new TypeError('Plugin requires a TinyServiceWorkerEngine instance to function.');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (!objChecker.isJsonObject(options)) {
|
|
38
|
+
throw new TypeError('[GlobCachePlugin] Options must be a non-null object.');
|
|
39
|
+
}
|
|
40
|
+
if (
|
|
41
|
+
typeof options.sameOriginOnly !== 'undefined' &&
|
|
42
|
+
typeof options.sameOriginOnly !== 'boolean'
|
|
43
|
+
) {
|
|
44
|
+
throw new TypeError('[GlobCachePlugin] options.sameOriginOnly must be an boolean.');
|
|
45
|
+
}
|
|
46
|
+
if (!Array.isArray(options.patterns) || !options.patterns.every((p) => typeof p === 'string')) {
|
|
47
|
+
throw new TypeError('[GlobCachePlugin] options.patterns must be an array of strings.');
|
|
48
|
+
}
|
|
49
|
+
if (
|
|
50
|
+
typeof options.exclude !== 'undefined' &&
|
|
51
|
+
(!Array.isArray(options.exclude) || !options.exclude.every((p) => typeof p === 'string'))
|
|
52
|
+
) {
|
|
53
|
+
throw new TypeError('[GlobCachePlugin] options.exclude must be an array of strings.');
|
|
54
|
+
}
|
|
55
|
+
if (typeof options.cacheName !== 'string') {
|
|
56
|
+
throw new TypeError('[GlobCachePlugin] options.cacheName must be a string.');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const { patterns, exclude, cacheName, sameOriginOnly = true } = options;
|
|
60
|
+
|
|
61
|
+
// Pre-compile exclusion patterns into Regex for performance
|
|
62
|
+
const excludeRegexes = (exclude || []).map((pattern) => Glob.compileGlobRegExp(pattern));
|
|
63
|
+
|
|
64
|
+
// 2. Implementation
|
|
65
|
+
for (const pattern of patterns) {
|
|
66
|
+
const regex = Glob.compileGlobRegExp(pattern);
|
|
67
|
+
engine.addFetchRegExpListener(regex.source, async (fetchObj, result) => {
|
|
68
|
+
const { request, url } = fetchObj;
|
|
69
|
+
if (sameOriginOnly && !fetchObj.isSameOrigin) {
|
|
70
|
+
return; // Skip this request
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Check if the current URL matches any exclusion pattern
|
|
74
|
+
const isExcluded = excludeRegexes.some((re) => re.test(url.pathname));
|
|
75
|
+
if (isExcluded) {
|
|
76
|
+
return; // Skip this request
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
try {
|
|
80
|
+
const cache = await caches.open(cacheName);
|
|
81
|
+
const cachedResponse = await cache.match(request);
|
|
82
|
+
|
|
83
|
+
if (cachedResponse) {
|
|
84
|
+
// Inject the cached response into the result object
|
|
85
|
+
result.customResponse = cachedResponse;
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// If not in cache, fetch from network
|
|
90
|
+
const networkResponse = await fetch(request);
|
|
91
|
+
|
|
92
|
+
// We must clone the response to add it to the cache,
|
|
93
|
+
// as the body can only be consumed once.
|
|
94
|
+
// Cache API only supports storing GET requests.
|
|
95
|
+
if (networkResponse.status === 200 && request.method === 'GET') {
|
|
96
|
+
cache.put(request, networkResponse.clone());
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
instance.log('info', `File detected: ${fetchObj.url.toString()}`);
|
|
100
|
+
result.customResponse = networkResponse;
|
|
101
|
+
} catch (error) {
|
|
102
|
+
// If caching fails, we don't break the flow,
|
|
103
|
+
// we just let the engine proceed to the next plugin or router.
|
|
104
|
+
console.error(`[GlobCachePlugin] Error during cache operation for ${url.pathname}:`, error);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return new TinyPluginLayer();
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
module.exports = GlobCachePlugin;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
declare const TinyPluginLayer: typeof import("../../../plugin/TinyPlugin.mjs").TinyPluginLayer;
|
|
2
|
+
export type GlobCacheOptions = {
|
|
3
|
+
/**
|
|
4
|
+
* - Array of glob patterns (e.g., ['\*\*\/\*.js', '\*\*\/\*.{css,html}']).
|
|
5
|
+
*/
|
|
6
|
+
patterns: string[];
|
|
7
|
+
/**
|
|
8
|
+
* - Array of glob patterns to ignore (e.g., ['\*\*\/sw.js']).
|
|
9
|
+
*/
|
|
10
|
+
exclude?: string[];
|
|
11
|
+
sameOriginOnly?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* - The name of the CacheStorage bucket to use.
|
|
14
|
+
*/
|
|
15
|
+
cacheName: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* @typedef {Object} GlobCacheOptions
|
|
19
|
+
* @property {string[]} patterns - Array of glob patterns (e.g., ['\*\*\/\*.js', '\*\*\/\*.{css,html}']).
|
|
20
|
+
* @property {string[]} [exclude] - Array of glob patterns to ignore (e.g., ['\*\*\/sw.js']).
|
|
21
|
+
* @property {boolean} [sameOriginOnly=true]
|
|
22
|
+
* @property {string} cacheName - The name of the CacheStorage bucket to use.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* A plugin for TinyServiceWorkerEngine that implements runtime caching based on glob patterns.
|
|
26
|
+
* @type {import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'GlobCache', '1.0.0', [GlobCacheOptions]>}
|
|
27
|
+
* @throws {TypeError} If options or patterns are invalid.
|
|
28
|
+
*/
|
|
29
|
+
declare const GlobCachePlugin: import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'GlobCache', '1.0.0', [GlobCacheOptions]>;
|
|
30
|
+
export default GlobCachePlugin;
|
|
31
|
+
//# sourceMappingURL=GlobCachePlugin.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobCachePlugin.d.mts","sourceRoot":"","sources":["../../../../../../../src/v1/libs/sw/service/plugins/GlobCachePlugin.mjs"],"names":[],"mappings":"AAIA,QAAA,MAAQ,eAAe,iEAA4B,CAAC;AAGjD,YAAkB,gBAAgB,GAClC;;;;IAAqB,QAAQ,EAAlB,MAAM,EAAE,CACnB;;;;IAAsB,OAAO,AAA7B,CACA,EADW,MAAM,EAAE,CACnB;IAAqB,cAAc,AAAnC,CACA,EADW,OAAO,CAClB;;;;IAAmB,SAAS,EAAjB,MAAM,CACnB;CAAA,CAAA;AAND;;;;;;GAMG;AAEH;;;;GAIG;AACH,QAAA,MAAM,eAAe,EAHX,OAAO,gCAAgC,EAAE,iBAAiB,CAAC,YAAY,CAAC,OAAO,eAAe,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,gBAAgB,CAAC,CA2FlJ,CAAC;eAEa,eAAe"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { isJsonObject } from '../../../../basics/objChecker.mjs';
|
|
2
|
+
import { compileGlobRegExp } from '../../../../regexp/Glob.mjs';
|
|
3
|
+
import TinyServiceWorkerEngine from '../TinyServiceWorkerEngine.mjs';
|
|
4
|
+
const { TinyPluginLayer } = TinyServiceWorkerEngine;
|
|
5
|
+
/**
|
|
6
|
+
* @typedef {Object} GlobCacheOptions
|
|
7
|
+
* @property {string[]} patterns - Array of glob patterns (e.g., ['\*\*\/\*.js', '\*\*\/\*.{css,html}']).
|
|
8
|
+
* @property {string[]} [exclude] - Array of glob patterns to ignore (e.g., ['\*\*\/sw.js']).
|
|
9
|
+
* @property {boolean} [sameOriginOnly=true]
|
|
10
|
+
* @property {string} cacheName - The name of the CacheStorage bucket to use.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* A plugin for TinyServiceWorkerEngine that implements runtime caching based on glob patterns.
|
|
14
|
+
* @type {import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'GlobCache', '1.0.0', [GlobCacheOptions]>}
|
|
15
|
+
* @throws {TypeError} If options or patterns are invalid.
|
|
16
|
+
*/
|
|
17
|
+
const GlobCachePlugin = (instance, options) => {
|
|
18
|
+
const engine = instance.engine;
|
|
19
|
+
instance.id = 'GlobCache';
|
|
20
|
+
instance.version = '1.0.0';
|
|
21
|
+
instance.description = 'The glob cache manager.';
|
|
22
|
+
instance.authors = ['JasminDreasond'];
|
|
23
|
+
instance.contributors = ['JasminDreasond'];
|
|
24
|
+
instance.categories = ['router-validator'];
|
|
25
|
+
instance.tags = ['glob', 'regex', 'cache'];
|
|
26
|
+
// 1. Validation
|
|
27
|
+
if (!(engine instanceof TinyServiceWorkerEngine)) {
|
|
28
|
+
throw new TypeError('Plugin requires a TinyServiceWorkerEngine instance to function.');
|
|
29
|
+
}
|
|
30
|
+
if (!isJsonObject(options)) {
|
|
31
|
+
throw new TypeError('[GlobCachePlugin] Options must be a non-null object.');
|
|
32
|
+
}
|
|
33
|
+
if (typeof options.sameOriginOnly !== 'undefined' &&
|
|
34
|
+
typeof options.sameOriginOnly !== 'boolean') {
|
|
35
|
+
throw new TypeError('[GlobCachePlugin] options.sameOriginOnly must be an boolean.');
|
|
36
|
+
}
|
|
37
|
+
if (!Array.isArray(options.patterns) || !options.patterns.every((p) => typeof p === 'string')) {
|
|
38
|
+
throw new TypeError('[GlobCachePlugin] options.patterns must be an array of strings.');
|
|
39
|
+
}
|
|
40
|
+
if (typeof options.exclude !== 'undefined' &&
|
|
41
|
+
(!Array.isArray(options.exclude) || !options.exclude.every((p) => typeof p === 'string'))) {
|
|
42
|
+
throw new TypeError('[GlobCachePlugin] options.exclude must be an array of strings.');
|
|
43
|
+
}
|
|
44
|
+
if (typeof options.cacheName !== 'string') {
|
|
45
|
+
throw new TypeError('[GlobCachePlugin] options.cacheName must be a string.');
|
|
46
|
+
}
|
|
47
|
+
const { patterns, exclude, cacheName, sameOriginOnly = true } = options;
|
|
48
|
+
// Pre-compile exclusion patterns into Regex for performance
|
|
49
|
+
const excludeRegexes = (exclude || []).map((pattern) => compileGlobRegExp(pattern));
|
|
50
|
+
// 2. Implementation
|
|
51
|
+
for (const pattern of patterns) {
|
|
52
|
+
const regex = compileGlobRegExp(pattern);
|
|
53
|
+
engine.addFetchRegExpListener(regex.source, async (fetchObj, result) => {
|
|
54
|
+
const { request, url } = fetchObj;
|
|
55
|
+
if (sameOriginOnly && !fetchObj.isSameOrigin) {
|
|
56
|
+
return; // Skip this request
|
|
57
|
+
}
|
|
58
|
+
// Check if the current URL matches any exclusion pattern
|
|
59
|
+
const isExcluded = excludeRegexes.some((re) => re.test(url.pathname));
|
|
60
|
+
if (isExcluded) {
|
|
61
|
+
return; // Skip this request
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const cache = await caches.open(cacheName);
|
|
65
|
+
const cachedResponse = await cache.match(request);
|
|
66
|
+
if (cachedResponse) {
|
|
67
|
+
// Inject the cached response into the result object
|
|
68
|
+
result.customResponse = cachedResponse;
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// If not in cache, fetch from network
|
|
72
|
+
const networkResponse = await fetch(request);
|
|
73
|
+
// We must clone the response to add it to the cache,
|
|
74
|
+
// as the body can only be consumed once.
|
|
75
|
+
// Cache API only supports storing GET requests.
|
|
76
|
+
if (networkResponse.status === 200 && request.method === 'GET') {
|
|
77
|
+
cache.put(request, networkResponse.clone());
|
|
78
|
+
}
|
|
79
|
+
instance.log('info', `File detected: ${fetchObj.url.toString()}`);
|
|
80
|
+
result.customResponse = networkResponse;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
// If caching fails, we don't break the flow,
|
|
84
|
+
// we just let the engine proceed to the next plugin or router.
|
|
85
|
+
console.error(`[GlobCachePlugin] Error during cache operation for ${url.pathname}:`, error);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return new TinyPluginLayer();
|
|
90
|
+
};
|
|
91
|
+
export default GlobCachePlugin;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var TinyServiceWorkerEngine = require('../TinyServiceWorkerEngine.cjs');
|
|
4
|
+
|
|
5
|
+
const { TinyPluginLayer } = TinyServiceWorkerEngine;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Ping/Pong Logic to plugin test.
|
|
9
|
+
*
|
|
10
|
+
* @type {import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'SimplePing', '1.0.0', []>}
|
|
11
|
+
*/
|
|
12
|
+
const TinyPingPwa = (instance) => {
|
|
13
|
+
const engine = instance.engine;
|
|
14
|
+
instance.id = 'SimplePing';
|
|
15
|
+
instance.version = '1.0.0';
|
|
16
|
+
instance.description = 'Ping tester plugin.';
|
|
17
|
+
instance.authors = ['JasminDreasond'];
|
|
18
|
+
instance.contributors = ['JasminDreasond'];
|
|
19
|
+
instance.categories = ['dev-tool'];
|
|
20
|
+
instance.tags = ['ping', 'test'];
|
|
21
|
+
|
|
22
|
+
if (!(engine instanceof TinyServiceWorkerEngine)) {
|
|
23
|
+
throw new TypeError('Plugin requires a TinyServiceWorkerEngine instance to function.');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
engine.addMessageListener('ping', ({ reply }) => {
|
|
27
|
+
reply('pong', { msg: 'mio! :3' });
|
|
28
|
+
});
|
|
29
|
+
return new TinyPluginLayer();
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
module.exports = TinyPingPwa;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const TinyPluginLayer: typeof import("../../../plugin/TinyPlugin.mjs").TinyPluginLayer;
|
|
2
|
+
/**
|
|
3
|
+
* Ping/Pong Logic to plugin test.
|
|
4
|
+
*
|
|
5
|
+
* @type {import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'SimplePing', '1.0.0', []>}
|
|
6
|
+
*/
|
|
7
|
+
declare const TinyPingPwa: import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'SimplePing', '1.0.0', []>;
|
|
8
|
+
export default TinyPingPwa;
|
|
9
|
+
//# sourceMappingURL=Ping.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ping.d.mts","sourceRoot":"","sources":["../../../../../../../src/v1/libs/sw/service/plugins/Ping.mjs"],"names":[],"mappings":"AAEA,QAAA,MAAQ,eAAe,iEAA4B,CAAC;AAEpD;;;;GAIG;AACH,QAAA,MAAM,WAAW,EAFP,OAAO,gCAAgC,EAAE,iBAAiB,CAAC,YAAY,CAAC,OAAO,eAAe,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,CAoBnI,CAAC;eAEa,WAAW"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import TinyServiceWorkerEngine from '../TinyServiceWorkerEngine.mjs';
|
|
2
|
+
const { TinyPluginLayer } = TinyServiceWorkerEngine;
|
|
3
|
+
/**
|
|
4
|
+
* Ping/Pong Logic to plugin test.
|
|
5
|
+
*
|
|
6
|
+
* @type {import('../TinyServiceWorkerEngine.mjs').SwPluginInstaller<InstanceType<typeof TinyPluginLayer>, 'SimplePing', '1.0.0', []>}
|
|
7
|
+
*/
|
|
8
|
+
const TinyPingPwa = (instance) => {
|
|
9
|
+
const engine = instance.engine;
|
|
10
|
+
instance.id = 'SimplePing';
|
|
11
|
+
instance.version = '1.0.0';
|
|
12
|
+
instance.description = 'Ping tester plugin.';
|
|
13
|
+
instance.authors = ['JasminDreasond'];
|
|
14
|
+
instance.contributors = ['JasminDreasond'];
|
|
15
|
+
instance.categories = ['dev-tool'];
|
|
16
|
+
instance.tags = ['ping', 'test'];
|
|
17
|
+
if (!(engine instanceof TinyServiceWorkerEngine)) {
|
|
18
|
+
throw new TypeError('Plugin requires a TinyServiceWorkerEngine instance to function.');
|
|
19
|
+
}
|
|
20
|
+
engine.addMessageListener('ping', ({ reply }) => {
|
|
21
|
+
reply('pong', { msg: 'mio! :3' });
|
|
22
|
+
});
|
|
23
|
+
return new TinyPluginLayer();
|
|
24
|
+
};
|
|
25
|
+
export default TinyPingPwa;
|