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,202 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index.cjs');
|
|
4
|
+
var error = require('../../error.cjs');
|
|
5
|
+
var constants = require('../../constants.cjs');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @file Storage Bucket backend for {@link TinyFSCore}.
|
|
9
|
+
*
|
|
10
|
+
* A storage bucket is an isolated origin private file system. This backend
|
|
11
|
+
* reuses every primitive implemented by {@link TinyOPFSFileSystem} and only
|
|
12
|
+
* overrides how the root directory handle is resolved, so a bucket behaves
|
|
13
|
+
* exactly like the default origin private file system.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/** @type {string} */
|
|
18
|
+
const DEFAULT_BUCKET_NAME = 'tiny-fs';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @typedef {Object} StorageBucketOpenOptions
|
|
22
|
+
* @property {'strict' | 'relaxed'} [durability] Persistence guarantee requested from the browser.
|
|
23
|
+
* @property {boolean} [persisted] Whether the bucket should survive eviction.
|
|
24
|
+
* @property {number} [quota] Maximum number of bytes the bucket may use.
|
|
25
|
+
* @property {number} [expires] Unix timestamp, in milliseconds, after which the bucket may be cleared.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @typedef {Object} StorageBucketDescriptor
|
|
30
|
+
* @property {string} [name] Name of the storage bucket. Defaults to `'tiny-fs'`.
|
|
31
|
+
* @property {'strict' | 'relaxed'} [durability] Persistence guarantee requested from the browser.
|
|
32
|
+
* @property {boolean} [persisted] Whether the bucket should survive eviction.
|
|
33
|
+
* @property {number} [quota] Maximum number of bytes the bucket may use.
|
|
34
|
+
* @property {number} [expires] Unix timestamp, in milliseconds, after which the bucket may be cleared.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @typedef {Object} StorageBucketFileSystemOptions
|
|
39
|
+
* @property {string} [cwd] Working directory used to resolve relative paths.
|
|
40
|
+
* @property {number} [umask] Permission mask applied on creation.
|
|
41
|
+
* @property {import('../../index.mjs').FSIdentity} [identity] Effective identity used by `access`.
|
|
42
|
+
* @property {StorageBucketDescriptor} [bucket] Storage bucket configuration.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @typedef {Object} ResolvedBucketDescriptor
|
|
47
|
+
* @property {string} name Validated bucket name.
|
|
48
|
+
* @property {StorageBucketOpenOptions} options Validated bucket options.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Validates the `bucket` option.
|
|
53
|
+
*
|
|
54
|
+
* @param {unknown} value Candidate value.
|
|
55
|
+
* @returns {ResolvedBucketDescriptor} The validated descriptor.
|
|
56
|
+
* @throws {TypeError} When the descriptor or one of its members has the wrong type.
|
|
57
|
+
* @throws {RangeError} When a numeric member is negative.
|
|
58
|
+
*/
|
|
59
|
+
const assertBucketDescriptor = (value) => {
|
|
60
|
+
if (value === undefined) {
|
|
61
|
+
return { name: DEFAULT_BUCKET_NAME, options: {} };
|
|
62
|
+
}
|
|
63
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
64
|
+
throw new TypeError('The "bucket" option must be of type object');
|
|
65
|
+
}
|
|
66
|
+
const { name, durability, persisted, quota, expires } = /** @type {StorageBucketDescriptor} */ (
|
|
67
|
+
value
|
|
68
|
+
);
|
|
69
|
+
if (name !== undefined && (typeof name !== 'string' || name.length === 0)) {
|
|
70
|
+
throw new TypeError('The "bucket.name" option must be a non-empty string');
|
|
71
|
+
}
|
|
72
|
+
if (durability !== undefined && durability !== 'strict' && durability !== 'relaxed') {
|
|
73
|
+
throw new TypeError('The "bucket.durability" option must be "strict" or "relaxed"');
|
|
74
|
+
}
|
|
75
|
+
if (persisted !== undefined && typeof persisted !== 'boolean') {
|
|
76
|
+
throw new TypeError('The "bucket.persisted" option must be of type boolean');
|
|
77
|
+
}
|
|
78
|
+
if (quota !== undefined) {
|
|
79
|
+
if (!Number.isInteger(quota)) {
|
|
80
|
+
throw new TypeError('The "bucket.quota" option must be an integer');
|
|
81
|
+
}
|
|
82
|
+
if (quota < 0) {
|
|
83
|
+
throw new RangeError('The "bucket.quota" option must not be negative');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (expires !== undefined) {
|
|
87
|
+
if (!Number.isInteger(expires)) {
|
|
88
|
+
throw new TypeError('The "bucket.expires" option must be an integer');
|
|
89
|
+
}
|
|
90
|
+
if (expires < 0) {
|
|
91
|
+
throw new RangeError('The "bucket.expires" option must not be negative');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
name: name ?? DEFAULT_BUCKET_NAME,
|
|
96
|
+
options: { durability, persisted, quota, expires },
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Origin Private File System backend scoped to a single storage bucket.
|
|
102
|
+
*
|
|
103
|
+
* @beta
|
|
104
|
+
*/
|
|
105
|
+
class TinyStorageBucketFileSystem extends index {
|
|
106
|
+
/** @type {string} */
|
|
107
|
+
#bucketName;
|
|
108
|
+
|
|
109
|
+
/** @type {StorageBucketOpenOptions} */
|
|
110
|
+
#bucketOptions;
|
|
111
|
+
|
|
112
|
+
/** @type {FileSystemDirectoryHandle | null} */
|
|
113
|
+
#bucketRoot = null;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* @param {StorageBucketFileSystemOptions} [options] Construction options.
|
|
117
|
+
* @throws {TypeError} When the `bucket` option is malformed.
|
|
118
|
+
* @throws {RangeError} When a numeric bucket option is negative.
|
|
119
|
+
*/
|
|
120
|
+
constructor(options = {}) {
|
|
121
|
+
super(options);
|
|
122
|
+
const descriptor = assertBucketDescriptor(options.bucket);
|
|
123
|
+
this.#bucketName = descriptor.name;
|
|
124
|
+
this.#bucketOptions = descriptor.options;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @returns {boolean} `true` when the Storage Buckets API is available.
|
|
129
|
+
*/
|
|
130
|
+
static get isSupported() {
|
|
131
|
+
return (
|
|
132
|
+
typeof navigator !== 'undefined' &&
|
|
133
|
+
typeof navigator.storageBuckets === 'object' &&
|
|
134
|
+
navigator.storageBuckets !== null
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Lists the names of every storage bucket owned by the origin.
|
|
140
|
+
*
|
|
141
|
+
* @returns {Promise<string[]>} The bucket names.
|
|
142
|
+
* @throws {Error} When the Storage Buckets API is not available.
|
|
143
|
+
*/
|
|
144
|
+
static async listBuckets() {
|
|
145
|
+
TinyStorageBucketFileSystem.#assertSupported('keys');
|
|
146
|
+
return navigator.storageBuckets.keys();
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Deletes a storage bucket owned by the origin.
|
|
151
|
+
*
|
|
152
|
+
* @param {string} name Name of the bucket to delete.
|
|
153
|
+
* @returns {Promise<boolean>} `true` when the bucket existed.
|
|
154
|
+
* @throws {TypeError} When `name` is not a non-empty string.
|
|
155
|
+
* @throws {Error} When the Storage Buckets API is not available.
|
|
156
|
+
*/
|
|
157
|
+
static async deleteBucket(name) {
|
|
158
|
+
if (typeof name !== 'string' || name.length === 0) {
|
|
159
|
+
throw new TypeError('The "name" argument must be a non-empty string');
|
|
160
|
+
}
|
|
161
|
+
TinyStorageBucketFileSystem.#assertSupported('delete');
|
|
162
|
+
return navigator.storageBuckets.delete(name);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/** @returns {string} Name of the storage bucket backing this instance. */
|
|
166
|
+
get bucketName() {
|
|
167
|
+
return this.#bucketName;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @override
|
|
172
|
+
* @returns {Promise<FileSystemDirectoryHandle>} The bucket root directory.
|
|
173
|
+
* @throws {Error} When the Storage Buckets API is not available.
|
|
174
|
+
*/
|
|
175
|
+
async _resolveRoot() {
|
|
176
|
+
if (this.#bucketRoot !== null) {
|
|
177
|
+
return this.#bucketRoot;
|
|
178
|
+
}
|
|
179
|
+
TinyStorageBucketFileSystem.#assertSupported('open');
|
|
180
|
+
const bucket = await navigator.storageBuckets.open(this.#bucketName, this.#bucketOptions);
|
|
181
|
+
this.#bucketRoot = await bucket.getDirectory();
|
|
182
|
+
return this.#bucketRoot;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* @param {string} syscall Name of the originating operation.
|
|
187
|
+
* @returns {void}
|
|
188
|
+
* @throws {Error} When the Storage Buckets API is not available.
|
|
189
|
+
*/
|
|
190
|
+
static #assertSupported(syscall) {
|
|
191
|
+
if (!TinyStorageBucketFileSystem.isSupported) {
|
|
192
|
+
throw error.createFileSystemError(
|
|
193
|
+
'ENOSYS',
|
|
194
|
+
syscall,
|
|
195
|
+
constants.ROOT_PATH,
|
|
196
|
+
'the Storage Buckets API is not available in this environment',
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
module.exports = TinyStorageBucketFileSystem;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Storage Bucket backend for {@link TinyFSCore}.
|
|
3
|
+
*
|
|
4
|
+
* A storage bucket is an isolated origin private file system. This backend
|
|
5
|
+
* reuses every primitive implemented by {@link TinyOPFSFileSystem} and only
|
|
6
|
+
* overrides how the root directory handle is resolved, so a bucket behaves
|
|
7
|
+
* exactly like the default origin private file system.
|
|
8
|
+
*/
|
|
9
|
+
import TinyOPFSFileSystem from './index.mjs';
|
|
10
|
+
export type StorageBucketOpenOptions = {
|
|
11
|
+
/**
|
|
12
|
+
* Persistence guarantee requested from the browser.
|
|
13
|
+
*/
|
|
14
|
+
durability?: 'strict' | 'relaxed';
|
|
15
|
+
/**
|
|
16
|
+
* Whether the bucket should survive eviction.
|
|
17
|
+
*/
|
|
18
|
+
persisted?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Maximum number of bytes the bucket may use.
|
|
21
|
+
*/
|
|
22
|
+
quota?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Unix timestamp, in milliseconds, after which the bucket may be cleared.
|
|
25
|
+
*/
|
|
26
|
+
expires?: number;
|
|
27
|
+
};
|
|
28
|
+
export type StorageBucketDescriptor = {
|
|
29
|
+
/**
|
|
30
|
+
* Name of the storage bucket. Defaults to `'tiny-fs'`.
|
|
31
|
+
*/
|
|
32
|
+
name?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Persistence guarantee requested from the browser.
|
|
35
|
+
*/
|
|
36
|
+
durability?: 'strict' | 'relaxed';
|
|
37
|
+
/**
|
|
38
|
+
* Whether the bucket should survive eviction.
|
|
39
|
+
*/
|
|
40
|
+
persisted?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Maximum number of bytes the bucket may use.
|
|
43
|
+
*/
|
|
44
|
+
quota?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Unix timestamp, in milliseconds, after which the bucket may be cleared.
|
|
47
|
+
*/
|
|
48
|
+
expires?: number;
|
|
49
|
+
};
|
|
50
|
+
export type StorageBucketFileSystemOptions = {
|
|
51
|
+
/**
|
|
52
|
+
* Working directory used to resolve relative paths.
|
|
53
|
+
*/
|
|
54
|
+
cwd?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Permission mask applied on creation.
|
|
57
|
+
*/
|
|
58
|
+
umask?: number;
|
|
59
|
+
/**
|
|
60
|
+
* Effective identity used by `access`.
|
|
61
|
+
*/
|
|
62
|
+
identity?: import('../../index.mjs').FSIdentity;
|
|
63
|
+
/**
|
|
64
|
+
* Storage bucket configuration.
|
|
65
|
+
*/
|
|
66
|
+
bucket?: StorageBucketDescriptor;
|
|
67
|
+
};
|
|
68
|
+
export type ResolvedBucketDescriptor = {
|
|
69
|
+
/**
|
|
70
|
+
* Validated bucket name.
|
|
71
|
+
*/
|
|
72
|
+
name: string;
|
|
73
|
+
/**
|
|
74
|
+
* Validated bucket options.
|
|
75
|
+
*/
|
|
76
|
+
options: StorageBucketOpenOptions;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Origin Private File System backend scoped to a single storage bucket.
|
|
80
|
+
*
|
|
81
|
+
* @beta
|
|
82
|
+
*/
|
|
83
|
+
declare class TinyStorageBucketFileSystem extends TinyOPFSFileSystem {
|
|
84
|
+
#private;
|
|
85
|
+
/**
|
|
86
|
+
* @param {StorageBucketFileSystemOptions} [options] Construction options.
|
|
87
|
+
* @throws {TypeError} When the `bucket` option is malformed.
|
|
88
|
+
* @throws {RangeError} When a numeric bucket option is negative.
|
|
89
|
+
*/
|
|
90
|
+
constructor(options?: StorageBucketFileSystemOptions);
|
|
91
|
+
/**
|
|
92
|
+
* @returns {boolean} `true` when the Storage Buckets API is available.
|
|
93
|
+
*/
|
|
94
|
+
static get isSupported(): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Lists the names of every storage bucket owned by the origin.
|
|
97
|
+
*
|
|
98
|
+
* @returns {Promise<string[]>} The bucket names.
|
|
99
|
+
* @throws {Error} When the Storage Buckets API is not available.
|
|
100
|
+
*/
|
|
101
|
+
static listBuckets(): Promise<string[]>;
|
|
102
|
+
/**
|
|
103
|
+
* Deletes a storage bucket owned by the origin.
|
|
104
|
+
*
|
|
105
|
+
* @param {string} name Name of the bucket to delete.
|
|
106
|
+
* @returns {Promise<boolean>} `true` when the bucket existed.
|
|
107
|
+
* @throws {TypeError} When `name` is not a non-empty string.
|
|
108
|
+
* @throws {Error} When the Storage Buckets API is not available.
|
|
109
|
+
*/
|
|
110
|
+
static deleteBucket(name: string): Promise<boolean>;
|
|
111
|
+
/** @returns {string} Name of the storage bucket backing this instance. */
|
|
112
|
+
get bucketName(): string;
|
|
113
|
+
/**
|
|
114
|
+
* @override
|
|
115
|
+
* @returns {Promise<FileSystemDirectoryHandle>} The bucket root directory.
|
|
116
|
+
* @throws {Error} When the Storage Buckets API is not available.
|
|
117
|
+
*/
|
|
118
|
+
_resolveRoot(): Promise<FileSystemDirectoryHandle>;
|
|
119
|
+
}
|
|
120
|
+
export default TinyStorageBucketFileSystem;
|
|
121
|
+
//# sourceMappingURL=StorageBucket.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageBucket.d.mts","sourceRoot":"","sources":["../../../../../../src/v1/libs/fs/plugins/OPFS/StorageBucket.mjs"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,kBAAkB,MAAM,aAAa,CAAC;AAQ1C,YAAkB,wBAAwB,GAC1C;;;;IAAkC,UAAU,AAA5C,CACA,EADW,QAAQ,GAAG,SAAS,CAC/B;;;;IAAqB,SAAS,AAA9B,CACA,EADW,OAAO,CAClB;;;;IAAoB,KAAK,AAAzB,CACA,EADW,MAAM,CACjB;;;;IAAoB,OAAO,AAA3B,CACF,EADa,MAAM,CACnB;CAAA,CAAA;AAGE,YAAkB,uBAAuB,GACzC;;;;IAAoB,IAAI,AAAxB,CACA,EADW,MAAM,CACjB;;;;IAAkC,UAAU,AAA5C,CACA,EADW,QAAQ,GAAG,SAAS,CAC/B;;;;IAAqB,SAAS,AAA9B,CACA,EADW,OAAO,CAClB;;;;IAAoB,KAAK,AAAzB,CACA,EADW,MAAM,CACjB;;;;IAAoB,OAAO,AAA3B,CACF,EADa,MAAM,CACnB;CAAA,CAAA;AAGE,YAAkB,8BAA8B,GAChD;;;;IAAoB,GAAG,AAAvB,CACA,EADW,MAAM,CACjB;;;;IAAoB,KAAK,AAAzB,CACA,EADW,MAAM,CACjB;;;;IAAkD,QAAQ,AAA1D,CACA,EADW,OAAO,iBAAiB,EAAE,UAAU,CAC/C;;;;IAAqC,MAAM,AAA3C,CACF,EADa,uBAAuB,CACpC;CAAA,CAAA;AAGE,YAAkB,wBAAwB,GAC1C;;;;IAAmB,IAAI,EAAZ,MAAM,CACjB;;;;IAAqC,OAAO,EAAjC,wBAAwB,CACrC;CAAA,CAAA;AAmDD;;;;GAIG;AACH,cAAM,2BAA4B,SAAQ,kBAAkB;;IAU1D;;;;OAIG;IACH,YAAY,OAAO,AAJhB,CACA,EADQ,8BAIa,EAKvB;IAED;;OAEG;IACH,MAAM,KAAK,WAAW,IAFT,OAAO,CAQnB;IAED;;;;;OAKG;IACH,OAAa,WAAW,IAHX,OAAO,CAAC,MAAM,EAAE,CAAC,CAM7B;IAED;;;;;;;OAOG;IACH,OAAa,YAAY,CAAC,IAAI,EALnB,MAKmB,GAJjB,OAAO,CAAC,OAAO,CAAC,CAU5B;IAED,0EAA0E;IAC1E,IAAI,UAAU,IADA,MAAM,CAGnB;IAED;;;;OAIG;IACG,YAAY,IAHL,OAAO,CAAC,yBAAyB,CAAC,CAW9C;CAiBF;eAEc,2BAA2B"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Storage Bucket backend for {@link TinyFSCore}.
|
|
3
|
+
*
|
|
4
|
+
* A storage bucket is an isolated origin private file system. This backend
|
|
5
|
+
* reuses every primitive implemented by {@link TinyOPFSFileSystem} and only
|
|
6
|
+
* overrides how the root directory handle is resolved, so a bucket behaves
|
|
7
|
+
* exactly like the default origin private file system.
|
|
8
|
+
*/
|
|
9
|
+
import TinyOPFSFileSystem from './index.mjs';
|
|
10
|
+
import { createFileSystemError } from '../../error.mjs';
|
|
11
|
+
import { ROOT_PATH } from '../../constants.mjs';
|
|
12
|
+
/** @type {string} */
|
|
13
|
+
const DEFAULT_BUCKET_NAME = 'tiny-fs';
|
|
14
|
+
/**
|
|
15
|
+
* @typedef {Object} StorageBucketOpenOptions
|
|
16
|
+
* @property {'strict' | 'relaxed'} [durability] Persistence guarantee requested from the browser.
|
|
17
|
+
* @property {boolean} [persisted] Whether the bucket should survive eviction.
|
|
18
|
+
* @property {number} [quota] Maximum number of bytes the bucket may use.
|
|
19
|
+
* @property {number} [expires] Unix timestamp, in milliseconds, after which the bucket may be cleared.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* @typedef {Object} StorageBucketDescriptor
|
|
23
|
+
* @property {string} [name] Name of the storage bucket. Defaults to `'tiny-fs'`.
|
|
24
|
+
* @property {'strict' | 'relaxed'} [durability] Persistence guarantee requested from the browser.
|
|
25
|
+
* @property {boolean} [persisted] Whether the bucket should survive eviction.
|
|
26
|
+
* @property {number} [quota] Maximum number of bytes the bucket may use.
|
|
27
|
+
* @property {number} [expires] Unix timestamp, in milliseconds, after which the bucket may be cleared.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* @typedef {Object} StorageBucketFileSystemOptions
|
|
31
|
+
* @property {string} [cwd] Working directory used to resolve relative paths.
|
|
32
|
+
* @property {number} [umask] Permission mask applied on creation.
|
|
33
|
+
* @property {import('../../index.mjs').FSIdentity} [identity] Effective identity used by `access`.
|
|
34
|
+
* @property {StorageBucketDescriptor} [bucket] Storage bucket configuration.
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* @typedef {Object} ResolvedBucketDescriptor
|
|
38
|
+
* @property {string} name Validated bucket name.
|
|
39
|
+
* @property {StorageBucketOpenOptions} options Validated bucket options.
|
|
40
|
+
*/
|
|
41
|
+
/**
|
|
42
|
+
* Validates the `bucket` option.
|
|
43
|
+
*
|
|
44
|
+
* @param {unknown} value Candidate value.
|
|
45
|
+
* @returns {ResolvedBucketDescriptor} The validated descriptor.
|
|
46
|
+
* @throws {TypeError} When the descriptor or one of its members has the wrong type.
|
|
47
|
+
* @throws {RangeError} When a numeric member is negative.
|
|
48
|
+
*/
|
|
49
|
+
const assertBucketDescriptor = (value) => {
|
|
50
|
+
if (value === undefined) {
|
|
51
|
+
return { name: DEFAULT_BUCKET_NAME, options: {} };
|
|
52
|
+
}
|
|
53
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
54
|
+
throw new TypeError('The "bucket" option must be of type object');
|
|
55
|
+
}
|
|
56
|
+
const { name, durability, persisted, quota, expires } = /** @type {StorageBucketDescriptor} */ (value);
|
|
57
|
+
if (name !== undefined && (typeof name !== 'string' || name.length === 0)) {
|
|
58
|
+
throw new TypeError('The "bucket.name" option must be a non-empty string');
|
|
59
|
+
}
|
|
60
|
+
if (durability !== undefined && durability !== 'strict' && durability !== 'relaxed') {
|
|
61
|
+
throw new TypeError('The "bucket.durability" option must be "strict" or "relaxed"');
|
|
62
|
+
}
|
|
63
|
+
if (persisted !== undefined && typeof persisted !== 'boolean') {
|
|
64
|
+
throw new TypeError('The "bucket.persisted" option must be of type boolean');
|
|
65
|
+
}
|
|
66
|
+
if (quota !== undefined) {
|
|
67
|
+
if (!Number.isInteger(quota)) {
|
|
68
|
+
throw new TypeError('The "bucket.quota" option must be an integer');
|
|
69
|
+
}
|
|
70
|
+
if (quota < 0) {
|
|
71
|
+
throw new RangeError('The "bucket.quota" option must not be negative');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (expires !== undefined) {
|
|
75
|
+
if (!Number.isInteger(expires)) {
|
|
76
|
+
throw new TypeError('The "bucket.expires" option must be an integer');
|
|
77
|
+
}
|
|
78
|
+
if (expires < 0) {
|
|
79
|
+
throw new RangeError('The "bucket.expires" option must not be negative');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
name: name ?? DEFAULT_BUCKET_NAME,
|
|
84
|
+
options: { durability, persisted, quota, expires },
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Origin Private File System backend scoped to a single storage bucket.
|
|
89
|
+
*
|
|
90
|
+
* @beta
|
|
91
|
+
*/
|
|
92
|
+
class TinyStorageBucketFileSystem extends TinyOPFSFileSystem {
|
|
93
|
+
/** @type {string} */
|
|
94
|
+
#bucketName;
|
|
95
|
+
/** @type {StorageBucketOpenOptions} */
|
|
96
|
+
#bucketOptions;
|
|
97
|
+
/** @type {FileSystemDirectoryHandle | null} */
|
|
98
|
+
#bucketRoot = null;
|
|
99
|
+
/**
|
|
100
|
+
* @param {StorageBucketFileSystemOptions} [options] Construction options.
|
|
101
|
+
* @throws {TypeError} When the `bucket` option is malformed.
|
|
102
|
+
* @throws {RangeError} When a numeric bucket option is negative.
|
|
103
|
+
*/
|
|
104
|
+
constructor(options = {}) {
|
|
105
|
+
super(options);
|
|
106
|
+
const descriptor = assertBucketDescriptor(options.bucket);
|
|
107
|
+
this.#bucketName = descriptor.name;
|
|
108
|
+
this.#bucketOptions = descriptor.options;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @returns {boolean} `true` when the Storage Buckets API is available.
|
|
112
|
+
*/
|
|
113
|
+
static get isSupported() {
|
|
114
|
+
return (typeof navigator !== 'undefined' &&
|
|
115
|
+
typeof navigator.storageBuckets === 'object' &&
|
|
116
|
+
navigator.storageBuckets !== null);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Lists the names of every storage bucket owned by the origin.
|
|
120
|
+
*
|
|
121
|
+
* @returns {Promise<string[]>} The bucket names.
|
|
122
|
+
* @throws {Error} When the Storage Buckets API is not available.
|
|
123
|
+
*/
|
|
124
|
+
static async listBuckets() {
|
|
125
|
+
TinyStorageBucketFileSystem.#assertSupported('keys');
|
|
126
|
+
return navigator.storageBuckets.keys();
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Deletes a storage bucket owned by the origin.
|
|
130
|
+
*
|
|
131
|
+
* @param {string} name Name of the bucket to delete.
|
|
132
|
+
* @returns {Promise<boolean>} `true` when the bucket existed.
|
|
133
|
+
* @throws {TypeError} When `name` is not a non-empty string.
|
|
134
|
+
* @throws {Error} When the Storage Buckets API is not available.
|
|
135
|
+
*/
|
|
136
|
+
static async deleteBucket(name) {
|
|
137
|
+
if (typeof name !== 'string' || name.length === 0) {
|
|
138
|
+
throw new TypeError('The "name" argument must be a non-empty string');
|
|
139
|
+
}
|
|
140
|
+
TinyStorageBucketFileSystem.#assertSupported('delete');
|
|
141
|
+
return navigator.storageBuckets.delete(name);
|
|
142
|
+
}
|
|
143
|
+
/** @returns {string} Name of the storage bucket backing this instance. */
|
|
144
|
+
get bucketName() {
|
|
145
|
+
return this.#bucketName;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* @override
|
|
149
|
+
* @returns {Promise<FileSystemDirectoryHandle>} The bucket root directory.
|
|
150
|
+
* @throws {Error} When the Storage Buckets API is not available.
|
|
151
|
+
*/
|
|
152
|
+
async _resolveRoot() {
|
|
153
|
+
if (this.#bucketRoot !== null) {
|
|
154
|
+
return this.#bucketRoot;
|
|
155
|
+
}
|
|
156
|
+
TinyStorageBucketFileSystem.#assertSupported('open');
|
|
157
|
+
const bucket = await navigator.storageBuckets.open(this.#bucketName, this.#bucketOptions);
|
|
158
|
+
this.#bucketRoot = await bucket.getDirectory();
|
|
159
|
+
return this.#bucketRoot;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* @param {string} syscall Name of the originating operation.
|
|
163
|
+
* @returns {void}
|
|
164
|
+
* @throws {Error} When the Storage Buckets API is not available.
|
|
165
|
+
*/
|
|
166
|
+
static #assertSupported(syscall) {
|
|
167
|
+
if (!TinyStorageBucketFileSystem.isSupported) {
|
|
168
|
+
throw createFileSystemError('ENOSYS', syscall, ROOT_PATH, 'the Storage Buckets API is not available in this environment');
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
export default TinyStorageBucketFileSystem;
|