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,234 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var constants = require('./constants.cjs');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file Pure POSIX-like path helpers.
|
|
7
|
+
*
|
|
8
|
+
* OPFS has no symbolic links, therefore `.` and `..` can be resolved
|
|
9
|
+
* lexically without touching the file system.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* The public API mirrors `node:path` from the Node.js project, used here
|
|
13
|
+
* as the reference specification. Node.js is distributed under the MIT
|
|
14
|
+
* license.
|
|
15
|
+
*
|
|
16
|
+
* @see {@link https://nodejs.org/api/path.html}
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @typedef {Object} ParsedPath
|
|
22
|
+
* @property {string} root Root of the path. Always `/`.
|
|
23
|
+
* @property {string} dir Directory of the path.
|
|
24
|
+
* @property {string} base Base name, including the extension.
|
|
25
|
+
* @property {string} ext Extension, including the leading dot.
|
|
26
|
+
* @property {string} name Base name, without the extension.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @typedef {Object} PathObject
|
|
31
|
+
* @property {string} [root] Root of the path.
|
|
32
|
+
* @property {string} [dir] Directory of the path.
|
|
33
|
+
* @property {string} [base] Base name, including the extension.
|
|
34
|
+
* @property {string} [ext] Extension, including the leading dot.
|
|
35
|
+
* @property {string} [name] Base name, without the extension.
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Platform-specific path segment separator. Always `/` in the browser.
|
|
40
|
+
*
|
|
41
|
+
* @type {string}
|
|
42
|
+
*/
|
|
43
|
+
const sep = constants.PATH_SEPARATOR;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Platform-specific list separator, as used by `PATH`-like variables.
|
|
47
|
+
*
|
|
48
|
+
* @type {string}
|
|
49
|
+
*/
|
|
50
|
+
const delimiter = ':';
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Splits a POSIX-like path into normalised segments.
|
|
54
|
+
*
|
|
55
|
+
* @param {string} targetPath Path to normalise.
|
|
56
|
+
* @returns {string[]} The normalised segments, without empty entries.
|
|
57
|
+
*/
|
|
58
|
+
const toSegments = (targetPath) => {
|
|
59
|
+
/** @type {string[]} */
|
|
60
|
+
const segments = [];
|
|
61
|
+
for (const segment of targetPath.split(constants.PATH_SEPARATOR)) {
|
|
62
|
+
if (segment.length === 0 || segment === '.') {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
if (segment === '..') {
|
|
66
|
+
segments.pop();
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
segments.push(segment);
|
|
70
|
+
}
|
|
71
|
+
return segments;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Rebuilds an absolute path from normalised segments.
|
|
76
|
+
*
|
|
77
|
+
* @param {string[]} segments Normalised segments.
|
|
78
|
+
* @returns {string} An absolute path starting with `/`.
|
|
79
|
+
*/
|
|
80
|
+
const toAbsolutePath = (segments) => constants.PATH_SEPARATOR + segments.join(constants.PATH_SEPARATOR);
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Normalises a path.
|
|
84
|
+
*
|
|
85
|
+
* @param {string} targetPath Path to normalise.
|
|
86
|
+
* @returns {string} The normalised absolute path.
|
|
87
|
+
*/
|
|
88
|
+
const normalize = (targetPath) => toAbsolutePath(toSegments(targetPath));
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Joins path fragments and normalises the result.
|
|
92
|
+
*
|
|
93
|
+
* @param {string[]} parts Path fragments.
|
|
94
|
+
* @returns {string} The joined absolute path.
|
|
95
|
+
*/
|
|
96
|
+
const join = (...parts) => normalize(parts.join(constants.PATH_SEPARATOR));
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Returns the parent directory of a path.
|
|
100
|
+
*
|
|
101
|
+
* @param {string} targetPath Source path.
|
|
102
|
+
* @returns {string} The parent directory.
|
|
103
|
+
*/
|
|
104
|
+
const dirname = (targetPath) => {
|
|
105
|
+
const segments = toSegments(targetPath);
|
|
106
|
+
segments.pop();
|
|
107
|
+
return toAbsolutePath(segments);
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Returns the last segment of a path.
|
|
112
|
+
*
|
|
113
|
+
* @param {string} targetPath Source path.
|
|
114
|
+
* @param {string} [extension] Extension removed from the result.
|
|
115
|
+
* @returns {string} The base name.
|
|
116
|
+
*/
|
|
117
|
+
const basename = (targetPath, extension) => {
|
|
118
|
+
const segments = toSegments(targetPath);
|
|
119
|
+
const name = segments.at(-1) ?? '';
|
|
120
|
+
if (extension !== undefined && name.endsWith(extension)) {
|
|
121
|
+
return name.slice(0, name.length - extension.length);
|
|
122
|
+
}
|
|
123
|
+
return name;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Returns the extension of a path, including the leading dot.
|
|
128
|
+
*
|
|
129
|
+
* @param {string} targetPath Source path.
|
|
130
|
+
* @returns {string} The extension, or an empty string.
|
|
131
|
+
*/
|
|
132
|
+
const extname = (targetPath) => {
|
|
133
|
+
const name = basename(targetPath);
|
|
134
|
+
const index = name.lastIndexOf('.');
|
|
135
|
+
return index <= 0 ? '' : name.slice(index);
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Reports whether a path is absolute.
|
|
140
|
+
*
|
|
141
|
+
* @param {string} targetPath Source path.
|
|
142
|
+
* @returns {boolean} `true` when the path starts with a slash.
|
|
143
|
+
*/
|
|
144
|
+
const isAbsolute = (targetPath) => targetPath.startsWith(constants.PATH_SEPARATOR);
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Resolves a sequence of path fragments against a working directory.
|
|
148
|
+
*
|
|
149
|
+
* @param {string} cwd Working directory used for relative fragments.
|
|
150
|
+
* @param {string[]} parts Path fragments.
|
|
151
|
+
* @returns {string} The resolved absolute path.
|
|
152
|
+
*/
|
|
153
|
+
const resolve = (cwd, ...parts) => {
|
|
154
|
+
const [first, ...rest] = parts;
|
|
155
|
+
if (first === undefined) {
|
|
156
|
+
return normalize(cwd);
|
|
157
|
+
}
|
|
158
|
+
const base = isAbsolute(first) ? first : `${cwd}${constants.PATH_SEPARATOR}${first}`;
|
|
159
|
+
return resolve(base, ...rest);
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Parses a path into its structural components.
|
|
164
|
+
*
|
|
165
|
+
* @param {string} targetPath Source path.
|
|
166
|
+
* @returns {ParsedPath} The parsed components.
|
|
167
|
+
*/
|
|
168
|
+
const parse = (targetPath) => {
|
|
169
|
+
const segments = toSegments(targetPath);
|
|
170
|
+
const base = segments.at(-1) ?? '';
|
|
171
|
+
const extension = extname(base);
|
|
172
|
+
return {
|
|
173
|
+
root: constants.PATH_SEPARATOR,
|
|
174
|
+
dir: toAbsolutePath(segments.slice(0, -1)),
|
|
175
|
+
base,
|
|
176
|
+
ext: extension,
|
|
177
|
+
name: extension.length === 0 ? base : base.slice(0, base.length - extension.length),
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Builds a path from its structural components.
|
|
183
|
+
*
|
|
184
|
+
* @param {PathObject} pathObject Components to serialise.
|
|
185
|
+
* @returns {string} The normalised absolute path.
|
|
186
|
+
* @throws {TypeError} When `pathObject` is not a plain object.
|
|
187
|
+
*/
|
|
188
|
+
const format = (pathObject) => {
|
|
189
|
+
if (pathObject === null || typeof pathObject !== 'object' || Array.isArray(pathObject)) {
|
|
190
|
+
throw new TypeError('The "pathObject" argument must be of type object');
|
|
191
|
+
}
|
|
192
|
+
const { root, dir, base, ext, name } = pathObject;
|
|
193
|
+
const resolvedBase = base ?? `${name ?? ''}${ext ?? ''}`;
|
|
194
|
+
const resolvedDirectory = dir ?? root ?? constants.ROOT_PATH;
|
|
195
|
+
return normalize(`${resolvedDirectory}${constants.PATH_SEPARATOR}${resolvedBase}`);
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Computes the relative path from one location to another.
|
|
200
|
+
*
|
|
201
|
+
* @param {string} from Source path.
|
|
202
|
+
* @param {string} to Destination path.
|
|
203
|
+
* @returns {string} The relative path, or an empty string when both are equal.
|
|
204
|
+
*/
|
|
205
|
+
const relative = (from, to) => {
|
|
206
|
+
const fromSegments = toSegments(from);
|
|
207
|
+
const toSegmentsList = toSegments(to);
|
|
208
|
+
let shared = 0;
|
|
209
|
+
while (
|
|
210
|
+
shared < fromSegments.length &&
|
|
211
|
+
shared < toSegmentsList.length &&
|
|
212
|
+
fromSegments[shared] === toSegmentsList[shared]
|
|
213
|
+
) {
|
|
214
|
+
shared += 1;
|
|
215
|
+
}
|
|
216
|
+
const upward = new Array(fromSegments.length - shared).fill('..');
|
|
217
|
+
return [...upward, ...toSegmentsList.slice(shared)].join(constants.PATH_SEPARATOR);
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
exports.ROOT_PATH = constants.ROOT_PATH;
|
|
221
|
+
exports.basename = basename;
|
|
222
|
+
exports.delimiter = delimiter;
|
|
223
|
+
exports.dirname = dirname;
|
|
224
|
+
exports.extname = extname;
|
|
225
|
+
exports.format = format;
|
|
226
|
+
exports.isAbsolute = isAbsolute;
|
|
227
|
+
exports.join = join;
|
|
228
|
+
exports.normalize = normalize;
|
|
229
|
+
exports.parse = parse;
|
|
230
|
+
exports.relative = relative;
|
|
231
|
+
exports.resolve = resolve;
|
|
232
|
+
exports.sep = sep;
|
|
233
|
+
exports.toAbsolutePath = toAbsolutePath;
|
|
234
|
+
exports.toSegments = toSegments;
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Pure POSIX-like path helpers.
|
|
3
|
+
*
|
|
4
|
+
* OPFS has no symbolic links, therefore `.` and `..` can be resolved
|
|
5
|
+
* lexically without touching the file system.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* The public API mirrors `node:path` from the Node.js project, used here
|
|
9
|
+
* as the reference specification. Node.js is distributed under the MIT
|
|
10
|
+
* license.
|
|
11
|
+
*
|
|
12
|
+
* @see {@link https://nodejs.org/api/path.html}
|
|
13
|
+
*/
|
|
14
|
+
import { ROOT_PATH } from './constants.mjs';
|
|
15
|
+
export type ParsedPath = {
|
|
16
|
+
/**
|
|
17
|
+
* Root of the path. Always `/`.
|
|
18
|
+
*/
|
|
19
|
+
root: string;
|
|
20
|
+
/**
|
|
21
|
+
* Directory of the path.
|
|
22
|
+
*/
|
|
23
|
+
dir: string;
|
|
24
|
+
/**
|
|
25
|
+
* Base name, including the extension.
|
|
26
|
+
*/
|
|
27
|
+
base: string;
|
|
28
|
+
/**
|
|
29
|
+
* Extension, including the leading dot.
|
|
30
|
+
*/
|
|
31
|
+
ext: string;
|
|
32
|
+
/**
|
|
33
|
+
* Base name, without the extension.
|
|
34
|
+
*/
|
|
35
|
+
name: string;
|
|
36
|
+
};
|
|
37
|
+
export type PathObject = {
|
|
38
|
+
/**
|
|
39
|
+
* Root of the path.
|
|
40
|
+
*/
|
|
41
|
+
root?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Directory of the path.
|
|
44
|
+
*/
|
|
45
|
+
dir?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Base name, including the extension.
|
|
48
|
+
*/
|
|
49
|
+
base?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Extension, including the leading dot.
|
|
52
|
+
*/
|
|
53
|
+
ext?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Base name, without the extension.
|
|
56
|
+
*/
|
|
57
|
+
name?: string;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* @typedef {Object} ParsedPath
|
|
61
|
+
* @property {string} root Root of the path. Always `/`.
|
|
62
|
+
* @property {string} dir Directory of the path.
|
|
63
|
+
* @property {string} base Base name, including the extension.
|
|
64
|
+
* @property {string} ext Extension, including the leading dot.
|
|
65
|
+
* @property {string} name Base name, without the extension.
|
|
66
|
+
*/
|
|
67
|
+
/**
|
|
68
|
+
* @typedef {Object} PathObject
|
|
69
|
+
* @property {string} [root] Root of the path.
|
|
70
|
+
* @property {string} [dir] Directory of the path.
|
|
71
|
+
* @property {string} [base] Base name, including the extension.
|
|
72
|
+
* @property {string} [ext] Extension, including the leading dot.
|
|
73
|
+
* @property {string} [name] Base name, without the extension.
|
|
74
|
+
*/
|
|
75
|
+
/**
|
|
76
|
+
* Platform-specific path segment separator. Always `/` in the browser.
|
|
77
|
+
*
|
|
78
|
+
* @type {string}
|
|
79
|
+
*/
|
|
80
|
+
export declare const sep: string;
|
|
81
|
+
/**
|
|
82
|
+
* Platform-specific list separator, as used by `PATH`-like variables.
|
|
83
|
+
*
|
|
84
|
+
* @type {string}
|
|
85
|
+
*/
|
|
86
|
+
export declare const delimiter: string;
|
|
87
|
+
/**
|
|
88
|
+
* Splits a POSIX-like path into normalised segments.
|
|
89
|
+
*
|
|
90
|
+
* @param {string} targetPath Path to normalise.
|
|
91
|
+
* @returns {string[]} The normalised segments, without empty entries.
|
|
92
|
+
*/
|
|
93
|
+
export declare const toSegments: (targetPath: string) => string[];
|
|
94
|
+
/**
|
|
95
|
+
* Rebuilds an absolute path from normalised segments.
|
|
96
|
+
*
|
|
97
|
+
* @param {string[]} segments Normalised segments.
|
|
98
|
+
* @returns {string} An absolute path starting with `/`.
|
|
99
|
+
*/
|
|
100
|
+
export declare const toAbsolutePath: (segments: string[]) => string;
|
|
101
|
+
/**
|
|
102
|
+
* Normalises a path.
|
|
103
|
+
*
|
|
104
|
+
* @param {string} targetPath Path to normalise.
|
|
105
|
+
* @returns {string} The normalised absolute path.
|
|
106
|
+
*/
|
|
107
|
+
export declare const normalize: (targetPath: string) => string;
|
|
108
|
+
/**
|
|
109
|
+
* Joins path fragments and normalises the result.
|
|
110
|
+
*
|
|
111
|
+
* @param {string[]} parts Path fragments.
|
|
112
|
+
* @returns {string} The joined absolute path.
|
|
113
|
+
*/
|
|
114
|
+
export declare const join: (...parts: string[]) => string;
|
|
115
|
+
/**
|
|
116
|
+
* Returns the parent directory of a path.
|
|
117
|
+
*
|
|
118
|
+
* @param {string} targetPath Source path.
|
|
119
|
+
* @returns {string} The parent directory.
|
|
120
|
+
*/
|
|
121
|
+
export declare const dirname: (targetPath: string) => string;
|
|
122
|
+
/**
|
|
123
|
+
* Returns the last segment of a path.
|
|
124
|
+
*
|
|
125
|
+
* @param {string} targetPath Source path.
|
|
126
|
+
* @param {string} [extension] Extension removed from the result.
|
|
127
|
+
* @returns {string} The base name.
|
|
128
|
+
*/
|
|
129
|
+
export declare const basename: (targetPath: string, extension?: string) => string;
|
|
130
|
+
/**
|
|
131
|
+
* Returns the extension of a path, including the leading dot.
|
|
132
|
+
*
|
|
133
|
+
* @param {string} targetPath Source path.
|
|
134
|
+
* @returns {string} The extension, or an empty string.
|
|
135
|
+
*/
|
|
136
|
+
export declare const extname: (targetPath: string) => string;
|
|
137
|
+
/**
|
|
138
|
+
* Reports whether a path is absolute.
|
|
139
|
+
*
|
|
140
|
+
* @param {string} targetPath Source path.
|
|
141
|
+
* @returns {boolean} `true` when the path starts with a slash.
|
|
142
|
+
*/
|
|
143
|
+
export declare const isAbsolute: (targetPath: string) => boolean;
|
|
144
|
+
/**
|
|
145
|
+
* Resolves a sequence of path fragments against a working directory.
|
|
146
|
+
*
|
|
147
|
+
* @param {string} cwd Working directory used for relative fragments.
|
|
148
|
+
* @param {string[]} parts Path fragments.
|
|
149
|
+
* @returns {string} The resolved absolute path.
|
|
150
|
+
*/
|
|
151
|
+
export declare const resolve: (cwd: string, ...parts: string[]) => string;
|
|
152
|
+
/**
|
|
153
|
+
* Parses a path into its structural components.
|
|
154
|
+
*
|
|
155
|
+
* @param {string} targetPath Source path.
|
|
156
|
+
* @returns {ParsedPath} The parsed components.
|
|
157
|
+
*/
|
|
158
|
+
export declare const parse: (targetPath: string) => ParsedPath;
|
|
159
|
+
/**
|
|
160
|
+
* Builds a path from its structural components.
|
|
161
|
+
*
|
|
162
|
+
* @param {PathObject} pathObject Components to serialise.
|
|
163
|
+
* @returns {string} The normalised absolute path.
|
|
164
|
+
* @throws {TypeError} When `pathObject` is not a plain object.
|
|
165
|
+
*/
|
|
166
|
+
export declare const format: (pathObject: PathObject) => string;
|
|
167
|
+
/**
|
|
168
|
+
* Computes the relative path from one location to another.
|
|
169
|
+
*
|
|
170
|
+
* @param {string} from Source path.
|
|
171
|
+
* @param {string} to Destination path.
|
|
172
|
+
* @returns {string} The relative path, or an empty string when both are equal.
|
|
173
|
+
*/
|
|
174
|
+
export declare const relative: (from: string, to: string) => string;
|
|
175
|
+
export { ROOT_PATH };
|
|
176
|
+
//# sourceMappingURL=path.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.mts","sourceRoot":"","sources":["../../../../src/v1/libs/fs/path.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAkB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGzD,YAAkB,UAAU,GAC5B;;;;IAAmB,IAAI,EAAZ,MAAM,CACjB;;;;IAAmB,GAAG,EAAX,MAAM,CACjB;;;;IAAmB,IAAI,EAAZ,MAAM,CACjB;;;;IAAmB,GAAG,EAAX,MAAM,CACjB;;;;IAAmB,IAAI,EAAZ,MAAM,CACnB;CAAA,CAAA;AAGE,YAAkB,UAAU,GAC5B;;;;IAAoB,IAAI,AAAxB,CACA,EADW,MAAM,CACjB;;;;IAAoB,GAAG,AAAvB,CACA,EADW,MAAM,CACjB;;;;IAAoB,IAAI,AAAxB,CACA,EADW,MAAM,CACjB;;;;IAAoB,GAAG,AAAvB,CACA,EADW,MAAM,CACjB;;;;IAAoB,IAAI,AAAxB,CACF,EADa,MAAM,CACnB;CAAA,CAAA;AAhBD;;;;;;;GAOG;AAEH;;;;;;;GAOG;AAEH;;;;GAIG;AACH,eAAO,MAAM,GAAG,EAFN,MAEuB,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAFZ,MAEkB,CAAC;AAE7B;;;;;GAKG;AACH,eAAO,MAAM,UAAU,eAHZ,MAAM,KACJ,MAAM,EAgBlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,aAHhB,MAAM,EAAE,KACN,MAE6E,CAAC;AAE3F;;;;;GAKG;AACH,eAAO,MAAM,SAAS,eAHX,MAAM,KACJ,MAEkE,CAAC;AAEhF;;;;;GAKG;AACH,eAAO,MAAM,IAAI,aAHN,MAAM,EAAE,KACN,MAE0D,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,OAAO,eAHT,MAAM,KACJ,MAMZ,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,eAJV,MAAM,cACN,MAAM,KACJ,MASZ,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,OAAO,eAHT,MAAM,KACJ,MAMZ,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,eAHZ,MAAM,KACJ,OAEkE,CAAC;AAEhF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,QAJT,MAAM,YACN,MAAM,EAAE,KACN,MASZ,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,eAHP,MAAM,KACJ,UAaZ,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,eAJR,UAAU,KACR,MAWZ,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,SAJV,MAAM,MACN,MAAM,KACJ,MAeZ,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Pure POSIX-like path helpers.
|
|
3
|
+
*
|
|
4
|
+
* OPFS has no symbolic links, therefore `.` and `..` can be resolved
|
|
5
|
+
* lexically without touching the file system.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* The public API mirrors `node:path` from the Node.js project, used here
|
|
9
|
+
* as the reference specification. Node.js is distributed under the MIT
|
|
10
|
+
* license.
|
|
11
|
+
*
|
|
12
|
+
* @see {@link https://nodejs.org/api/path.html}
|
|
13
|
+
*/
|
|
14
|
+
import { PATH_SEPARATOR, ROOT_PATH } from './constants.mjs';
|
|
15
|
+
/**
|
|
16
|
+
* @typedef {Object} ParsedPath
|
|
17
|
+
* @property {string} root Root of the path. Always `/`.
|
|
18
|
+
* @property {string} dir Directory of the path.
|
|
19
|
+
* @property {string} base Base name, including the extension.
|
|
20
|
+
* @property {string} ext Extension, including the leading dot.
|
|
21
|
+
* @property {string} name Base name, without the extension.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* @typedef {Object} PathObject
|
|
25
|
+
* @property {string} [root] Root of the path.
|
|
26
|
+
* @property {string} [dir] Directory of the path.
|
|
27
|
+
* @property {string} [base] Base name, including the extension.
|
|
28
|
+
* @property {string} [ext] Extension, including the leading dot.
|
|
29
|
+
* @property {string} [name] Base name, without the extension.
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* Platform-specific path segment separator. Always `/` in the browser.
|
|
33
|
+
*
|
|
34
|
+
* @type {string}
|
|
35
|
+
*/
|
|
36
|
+
export const sep = PATH_SEPARATOR;
|
|
37
|
+
/**
|
|
38
|
+
* Platform-specific list separator, as used by `PATH`-like variables.
|
|
39
|
+
*
|
|
40
|
+
* @type {string}
|
|
41
|
+
*/
|
|
42
|
+
export const delimiter = ':';
|
|
43
|
+
/**
|
|
44
|
+
* Splits a POSIX-like path into normalised segments.
|
|
45
|
+
*
|
|
46
|
+
* @param {string} targetPath Path to normalise.
|
|
47
|
+
* @returns {string[]} The normalised segments, without empty entries.
|
|
48
|
+
*/
|
|
49
|
+
export const toSegments = (targetPath) => {
|
|
50
|
+
/** @type {string[]} */
|
|
51
|
+
const segments = [];
|
|
52
|
+
for (const segment of targetPath.split(PATH_SEPARATOR)) {
|
|
53
|
+
if (segment.length === 0 || segment === '.') {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (segment === '..') {
|
|
57
|
+
segments.pop();
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
segments.push(segment);
|
|
61
|
+
}
|
|
62
|
+
return segments;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Rebuilds an absolute path from normalised segments.
|
|
66
|
+
*
|
|
67
|
+
* @param {string[]} segments Normalised segments.
|
|
68
|
+
* @returns {string} An absolute path starting with `/`.
|
|
69
|
+
*/
|
|
70
|
+
export const toAbsolutePath = (segments) => PATH_SEPARATOR + segments.join(PATH_SEPARATOR);
|
|
71
|
+
/**
|
|
72
|
+
* Normalises a path.
|
|
73
|
+
*
|
|
74
|
+
* @param {string} targetPath Path to normalise.
|
|
75
|
+
* @returns {string} The normalised absolute path.
|
|
76
|
+
*/
|
|
77
|
+
export const normalize = (targetPath) => toAbsolutePath(toSegments(targetPath));
|
|
78
|
+
/**
|
|
79
|
+
* Joins path fragments and normalises the result.
|
|
80
|
+
*
|
|
81
|
+
* @param {string[]} parts Path fragments.
|
|
82
|
+
* @returns {string} The joined absolute path.
|
|
83
|
+
*/
|
|
84
|
+
export const join = (...parts) => normalize(parts.join(PATH_SEPARATOR));
|
|
85
|
+
/**
|
|
86
|
+
* Returns the parent directory of a path.
|
|
87
|
+
*
|
|
88
|
+
* @param {string} targetPath Source path.
|
|
89
|
+
* @returns {string} The parent directory.
|
|
90
|
+
*/
|
|
91
|
+
export const dirname = (targetPath) => {
|
|
92
|
+
const segments = toSegments(targetPath);
|
|
93
|
+
segments.pop();
|
|
94
|
+
return toAbsolutePath(segments);
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Returns the last segment of a path.
|
|
98
|
+
*
|
|
99
|
+
* @param {string} targetPath Source path.
|
|
100
|
+
* @param {string} [extension] Extension removed from the result.
|
|
101
|
+
* @returns {string} The base name.
|
|
102
|
+
*/
|
|
103
|
+
export const basename = (targetPath, extension) => {
|
|
104
|
+
const segments = toSegments(targetPath);
|
|
105
|
+
const name = segments.at(-1) ?? '';
|
|
106
|
+
if (extension !== undefined && name.endsWith(extension)) {
|
|
107
|
+
return name.slice(0, name.length - extension.length);
|
|
108
|
+
}
|
|
109
|
+
return name;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Returns the extension of a path, including the leading dot.
|
|
113
|
+
*
|
|
114
|
+
* @param {string} targetPath Source path.
|
|
115
|
+
* @returns {string} The extension, or an empty string.
|
|
116
|
+
*/
|
|
117
|
+
export const extname = (targetPath) => {
|
|
118
|
+
const name = basename(targetPath);
|
|
119
|
+
const index = name.lastIndexOf('.');
|
|
120
|
+
return index <= 0 ? '' : name.slice(index);
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Reports whether a path is absolute.
|
|
124
|
+
*
|
|
125
|
+
* @param {string} targetPath Source path.
|
|
126
|
+
* @returns {boolean} `true` when the path starts with a slash.
|
|
127
|
+
*/
|
|
128
|
+
export const isAbsolute = (targetPath) => targetPath.startsWith(PATH_SEPARATOR);
|
|
129
|
+
/**
|
|
130
|
+
* Resolves a sequence of path fragments against a working directory.
|
|
131
|
+
*
|
|
132
|
+
* @param {string} cwd Working directory used for relative fragments.
|
|
133
|
+
* @param {string[]} parts Path fragments.
|
|
134
|
+
* @returns {string} The resolved absolute path.
|
|
135
|
+
*/
|
|
136
|
+
export const resolve = (cwd, ...parts) => {
|
|
137
|
+
const [first, ...rest] = parts;
|
|
138
|
+
if (first === undefined) {
|
|
139
|
+
return normalize(cwd);
|
|
140
|
+
}
|
|
141
|
+
const base = isAbsolute(first) ? first : `${cwd}${PATH_SEPARATOR}${first}`;
|
|
142
|
+
return resolve(base, ...rest);
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* Parses a path into its structural components.
|
|
146
|
+
*
|
|
147
|
+
* @param {string} targetPath Source path.
|
|
148
|
+
* @returns {ParsedPath} The parsed components.
|
|
149
|
+
*/
|
|
150
|
+
export const parse = (targetPath) => {
|
|
151
|
+
const segments = toSegments(targetPath);
|
|
152
|
+
const base = segments.at(-1) ?? '';
|
|
153
|
+
const extension = extname(base);
|
|
154
|
+
return {
|
|
155
|
+
root: PATH_SEPARATOR,
|
|
156
|
+
dir: toAbsolutePath(segments.slice(0, -1)),
|
|
157
|
+
base,
|
|
158
|
+
ext: extension,
|
|
159
|
+
name: extension.length === 0 ? base : base.slice(0, base.length - extension.length),
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Builds a path from its structural components.
|
|
164
|
+
*
|
|
165
|
+
* @param {PathObject} pathObject Components to serialise.
|
|
166
|
+
* @returns {string} The normalised absolute path.
|
|
167
|
+
* @throws {TypeError} When `pathObject` is not a plain object.
|
|
168
|
+
*/
|
|
169
|
+
export const format = (pathObject) => {
|
|
170
|
+
if (pathObject === null || typeof pathObject !== 'object' || Array.isArray(pathObject)) {
|
|
171
|
+
throw new TypeError('The "pathObject" argument must be of type object');
|
|
172
|
+
}
|
|
173
|
+
const { root, dir, base, ext, name } = pathObject;
|
|
174
|
+
const resolvedBase = base ?? `${name ?? ''}${ext ?? ''}`;
|
|
175
|
+
const resolvedDirectory = dir ?? root ?? ROOT_PATH;
|
|
176
|
+
return normalize(`${resolvedDirectory}${PATH_SEPARATOR}${resolvedBase}`);
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Computes the relative path from one location to another.
|
|
180
|
+
*
|
|
181
|
+
* @param {string} from Source path.
|
|
182
|
+
* @param {string} to Destination path.
|
|
183
|
+
* @returns {string} The relative path, or an empty string when both are equal.
|
|
184
|
+
*/
|
|
185
|
+
export const relative = (from, to) => {
|
|
186
|
+
const fromSegments = toSegments(from);
|
|
187
|
+
const toSegmentsList = toSegments(to);
|
|
188
|
+
let shared = 0;
|
|
189
|
+
while (shared < fromSegments.length &&
|
|
190
|
+
shared < toSegmentsList.length &&
|
|
191
|
+
fromSegments[shared] === toSegmentsList[shared]) {
|
|
192
|
+
shared += 1;
|
|
193
|
+
}
|
|
194
|
+
const upward = new Array(fromSegments.length - shared).fill('..');
|
|
195
|
+
return [...upward, ...toSegmentsList.slice(shared)].join(PATH_SEPARATOR);
|
|
196
|
+
};
|
|
197
|
+
export { ROOT_PATH };
|