tiny-essentials 1.28.18 → 1.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/changelog/1/28/19.md +24 -0
- package/changelog/1/29/0.md +58 -0
- package/dist/v1/ColorSafeStringify.min.js +1 -1
- package/dist/v1/TinyAdvancedRaffle.min.js +1 -1
- package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
- package/dist/v1/TinyAnalogClock.min.js +1 -1
- package/dist/v1/TinyArrayComparator.min.js +1 -1
- package/dist/v1/TinyArrayPaginator.min.js +1 -1
- package/dist/v1/TinyBasicsEs.min.js +1 -1
- package/dist/v1/TinyBrowserMonitor.min.js +1 -0
- package/dist/v1/TinyClassManager.min.js +1 -1
- package/dist/v1/TinyClipboard.min.js +1 -1
- package/dist/v1/TinyCloner.min.js +1 -0
- package/dist/v1/TinyColorConverter.min.js +1 -1
- package/dist/v1/TinyColorValidator.min.js +1 -1
- package/dist/v1/TinyCookieConsent.min.js +1 -1
- package/dist/v1/TinyDayNightCycle.min.js +1 -1
- package/dist/v1/TinyDebugger.min.js +1 -1
- package/dist/v1/TinyDomReadyManager.min.js +1 -1
- package/dist/v1/TinyDragDropDetector.min.js +1 -1
- package/dist/v1/TinyDragger.min.js +1 -1
- package/dist/v1/TinyElementObserver.min.js +1 -1
- package/dist/v1/TinyEssentials.min.js +1 -1
- package/dist/v1/TinyGamepad.min.js +1 -1
- package/dist/v1/TinyHtml.min.js +1 -1
- package/dist/v1/TinyHtmlTagRegexBuilder.min.js +1 -0
- package/dist/v1/TinyHttpResponseRegistry.min.js +1 -0
- package/dist/v1/TinyI18.min.js +1 -1
- package/dist/v1/TinyIframeEvents.min.js +1 -1
- package/dist/v1/TinyInventory.min.js +1 -1
- package/dist/v1/TinyInventoryTrader.min.js +1 -1
- package/dist/v1/TinyLevelUp.min.js +1 -1
- package/dist/v1/TinyLoadingScreen.min.js +1 -1
- package/dist/v1/TinyLocalStorage.min.js +1 -1
- package/dist/v1/TinyMaInSys.min.js +1 -1
- package/dist/v1/TinyMapCache.min.js +1 -0
- package/dist/v1/TinyMediaPlayer.min.js +1 -1
- package/dist/v1/TinyNeedBar.min.js +1 -1
- package/dist/v1/TinyNewWinEvents.min.js +1 -1
- package/dist/v1/TinyNotificationAdapter.min.js +1 -0
- package/dist/v1/TinyNotifications.min.js +1 -1
- package/dist/v1/TinyNotifyCenter.min.js +1 -1
- package/dist/v1/TinyOPFSFileSystem.min.js +1 -0
- package/dist/v1/TinyPasswordValidator.min.js +1 -0
- package/dist/v1/TinyPluginPackage.min.js +1 -0
- package/dist/v1/TinyPromiseQueue.min.js +1 -1
- package/dist/v1/TinyPushManager.min.js +1 -0
- package/dist/v1/TinyPushPayload.min.js +1 -0
- package/dist/v1/TinyPushRouter.min.js +1 -0
- package/dist/v1/TinyRadioFm.min.js +1 -1
- package/dist/v1/TinyRateLimiter.min.js +1 -1
- package/dist/v1/TinyRegexEs.min.js +1 -0
- package/dist/v1/TinyRouter.min.js +1 -0
- package/dist/v1/TinyServiceWorker.min.js +1 -0
- package/dist/v1/TinyServiceWorkerEngine.min.js +1 -0
- package/dist/v1/TinySetMapPackage.min.js +1 -0
- package/dist/v1/TinySimpleDice.min.js +1 -1
- package/dist/v1/TinySmartScroller.min.js +1 -1
- package/dist/v1/TinyStorageBucketFileSystem.min.js +1 -0
- package/dist/v1/TinyTextDiffer.min.js +1 -1
- package/dist/v1/TinyTextRangeEditor.min.js +1 -1
- package/dist/v1/TinyTextarea.min.js +1 -1
- package/dist/v1/TinyThrottledApi.min.js +1 -0
- package/dist/v1/TinyTimeout.min.js +1 -1
- package/dist/v1/TinyToastNotify.min.js +1 -1
- package/dist/v1/TinyUploadClicker.min.js +1 -1
- package/dist/v1/TinyUriParser.min.js +1 -0
- package/dist/v1/TinyVersion.min.js +1 -0
- package/dist/v1/TinyWebWorker.min.js +1 -0
- package/dist/v1/TinyWebWorkerEngine.min.js +1 -0
- package/dist/v1/UltraRandomMsgGen.min.js +1 -1
- package/dist/v1/basics/array.cjs +2 -2
- package/dist/v1/basics/array.d.mts +2 -0
- package/dist/v1/basics/array.d.mts.map +1 -1
- package/dist/v1/basics/array.mjs +2 -1
- package/dist/v1/basics/browserDetector.cjs +37 -12
- package/dist/v1/basics/browserDetector.d.mts +8 -0
- package/dist/v1/basics/browserDetector.d.mts.map +1 -1
- package/dist/v1/basics/browserDetector.mjs +32 -13
- package/dist/v1/basics/crypto.cjs +23 -0
- package/dist/v1/basics/crypto.d.mts +10 -0
- package/dist/v1/basics/crypto.d.mts.map +1 -0
- package/dist/v1/basics/crypto.mjs +18 -0
- package/dist/v1/basics/html.cjs +0 -3
- package/dist/v1/basics/html.d.mts.map +1 -1
- package/dist/v1/basics/html.mjs +0 -2
- package/dist/v1/basics/index.cjs +8 -1
- package/dist/v1/basics/index.d.mts +6 -5
- package/dist/v1/basics/index.d.mts.map +1 -1
- package/dist/v1/basics/index.mjs +6 -5
- package/dist/v1/basics/objChecker.cjs +88 -0
- package/dist/v1/basics/objChecker.d.mts +26 -0
- package/dist/v1/basics/objChecker.d.mts.map +1 -1
- package/dist/v1/basics/objChecker.mjs +74 -0
- package/dist/v1/basics/objFilter.cjs +234 -93
- package/dist/v1/basics/objFilter.d.mts +96 -22
- package/dist/v1/basics/objFilter.d.mts.map +1 -1
- package/dist/v1/basics/objFilter.mjs +216 -92
- package/dist/v1/basics/promiseUtils.cjs +48 -12
- package/dist/v1/basics/promiseUtils.d.mts +45 -12
- package/dist/v1/basics/promiseUtils.d.mts.map +1 -1
- package/dist/v1/basics/promiseUtils.mjs +47 -12
- package/dist/v1/basics/text.cjs +0 -12
- package/dist/v1/basics/text.d.mts +0 -10
- package/dist/v1/basics/text.d.mts.map +1 -1
- package/dist/v1/basics/text.mjs +0 -10
- package/dist/v1/css/TinyCookieConsent.min.css +1 -0
- package/dist/v1/css/TinyCookieConsent.min.css.map +1 -0
- package/dist/v1/css/TinyDraggerExample.min.css +1 -0
- package/dist/v1/css/TinyDraggerExample.min.css.map +1 -0
- package/dist/v1/css/TinyLoadingScreen.min.css +1 -0
- package/dist/v1/css/TinyLoadingScreen.min.css.map +1 -0
- package/dist/v1/css/TinyNotify.min.css +1 -0
- package/dist/v1/css/TinyNotify.min.css.map +1 -0
- package/dist/v1/css/aiMarker.min.css +1 -0
- package/dist/v1/css/aiMarker.min.css.map +1 -0
- package/dist/v1/index.cjs +88 -3
- package/dist/v1/index.d.mts +31 -6
- package/dist/v1/index.d.mts.map +1 -1
- package/dist/v1/index.mjs +32 -7
- package/dist/v1/jsdoc/EventEmitter.cjs +4 -0
- package/dist/v1/jsdoc/EventEmitter.d.mts +33 -0
- package/dist/v1/jsdoc/EventEmitter.d.mts.map +1 -0
- package/dist/v1/jsdoc/EventEmitter.mjs +18 -0
- package/dist/v1/libs/array/TinyArrayComparator.cjs +240 -25
- package/dist/v1/libs/array/TinyArrayComparator.d.mts +130 -22
- package/dist/v1/libs/array/TinyArrayComparator.d.mts.map +1 -1
- package/dist/v1/libs/array/TinyArrayComparator.mjs +210 -24
- package/dist/v1/libs/fs/constants.cjs +74 -0
- package/dist/v1/libs/fs/constants.d.mts +22 -0
- package/dist/v1/libs/fs/constants.d.mts.map +1 -0
- package/dist/v1/libs/fs/constants.mjs +53 -0
- package/dist/v1/libs/fs/encoding.cjs +118 -0
- package/dist/v1/libs/fs/encoding.d.mts +50 -0
- package/dist/v1/libs/fs/encoding.d.mts.map +1 -0
- package/dist/v1/libs/fs/encoding.mjs +102 -0
- package/dist/v1/libs/fs/error.cjs +188 -0
- package/dist/v1/libs/fs/error.d.mts +105 -0
- package/dist/v1/libs/fs/error.d.mts.map +1 -0
- package/dist/v1/libs/fs/error.mjs +158 -0
- package/dist/v1/libs/fs/handle.cjs +121 -0
- package/dist/v1/libs/fs/handle.d.mts +56 -0
- package/dist/v1/libs/fs/handle.d.mts.map +1 -0
- package/dist/v1/libs/fs/handle.mjs +100 -0
- package/dist/v1/libs/fs/index.cjs +700 -0
- package/dist/v1/libs/fs/index.d.mts +377 -0
- package/dist/v1/libs/fs/index.d.mts.map +1 -0
- package/dist/v1/libs/fs/index.mjs +630 -0
- package/dist/v1/libs/fs/path.cjs +234 -0
- package/dist/v1/libs/fs/path.d.mts +176 -0
- package/dist/v1/libs/fs/path.d.mts.map +1 -0
- package/dist/v1/libs/fs/path.mjs +197 -0
- package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.cjs +202 -0
- package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts +121 -0
- package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts.map +1 -0
- package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.mjs +172 -0
- package/dist/v1/libs/fs/plugins/OPFS/index.cjs +334 -0
- package/dist/v1/libs/fs/plugins/OPFS/index.d.mts +98 -0
- package/dist/v1/libs/fs/plugins/OPFS/index.d.mts.map +1 -0
- package/dist/v1/libs/fs/plugins/OPFS/index.mjs +300 -0
- package/dist/v1/libs/fs/stats.cjs +245 -0
- package/dist/v1/libs/fs/stats.d.mts +226 -0
- package/dist/v1/libs/fs/stats.d.mts.map +1 -0
- package/dist/v1/libs/fs/stats.mjs +197 -0
- package/dist/v1/libs/html/events/TinyIframeEvents.cjs +10 -1
- package/dist/v1/libs/html/events/TinyIframeEvents.d.mts +9 -2
- package/dist/v1/libs/html/events/TinyIframeEvents.d.mts.map +1 -1
- package/dist/v1/libs/html/events/TinyIframeEvents.mjs +8 -1
- package/dist/v1/libs/html/events/TinyNewWinEvents.cjs +14 -3
- package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts +21 -5
- package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts.map +1 -1
- package/dist/v1/libs/html/events/TinyNewWinEvents.mjs +12 -3
- package/dist/v1/libs/html/scroll/TinySmartScroller.cjs +13 -1
- package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts +29 -2
- package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts.map +1 -1
- package/dist/v1/libs/html/scroll/TinySmartScroller.mjs +11 -1
- package/dist/v1/libs/math/TinyAdvancedRaffle.cjs +13 -1
- package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts +32 -2
- package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts.map +1 -1
- package/dist/v1/libs/math/TinyAdvancedRaffle.mjs +11 -1
- package/dist/v1/libs/math/TinyTimeout.cjs +0 -14
- package/dist/v1/libs/math/TinyTimeout.d.mts +0 -11
- package/dist/v1/libs/math/TinyTimeout.d.mts.map +1 -1
- package/dist/v1/libs/math/TinyTimeout.mjs +0 -13
- package/dist/v1/libs/media/TinyMediaPlayer/index.cjs +25 -1
- package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts +35 -2
- package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts.map +1 -1
- package/dist/v1/libs/media/TinyMediaPlayer/index.mjs +23 -1
- package/dist/v1/libs/media/TinyMediaPlayer.cjs +2 -2
- package/dist/v1/libs/media/TinyMediaPlayer.d.mts +2 -2
- package/dist/v1/libs/media/TinyMediaPlayer.d.mts.map +1 -1
- package/dist/v1/libs/media/TinyMediaPlayer.mjs +2 -2
- package/dist/v1/libs/media/TinyRadioFm.cjs +19 -1
- package/dist/v1/libs/media/TinyRadioFm.d.mts +78 -2
- package/dist/v1/libs/media/TinyRadioFm.d.mts.map +1 -1
- package/dist/v1/libs/media/TinyRadioFm.mjs +17 -1
- package/dist/v1/libs/plugin/TinyPlugin.cjs +1630 -0
- package/dist/v1/libs/plugin/TinyPlugin.d.mts +753 -0
- package/dist/v1/libs/plugin/TinyPlugin.d.mts.map +1 -0
- package/dist/v1/libs/plugin/TinyPlugin.mjs +1376 -0
- package/dist/v1/libs/plugin/TinyVersion.cjs +204 -0
- package/dist/v1/libs/plugin/TinyVersion.d.mts +70 -0
- package/dist/v1/libs/plugin/TinyVersion.d.mts.map +1 -0
- package/dist/v1/libs/plugin/TinyVersion.mjs +179 -0
- package/dist/v1/libs/router/TinyRouter.cjs +661 -0
- package/dist/v1/libs/router/TinyRouter.d.mts +320 -0
- package/dist/v1/libs/router/TinyRouter.d.mts.map +1 -0
- package/dist/v1/libs/router/TinyRouter.mjs +572 -0
- package/dist/v1/libs/storage/TinyLocalStorage.cjs +20 -1
- package/dist/v1/libs/storage/TinyLocalStorage.d.mts +64 -2
- package/dist/v1/libs/storage/TinyLocalStorage.d.mts.map +1 -1
- package/dist/v1/libs/storage/TinyLocalStorage.mjs +18 -1
- package/dist/v1/libs/storage/TinyMapCache.cjs +373 -0
- package/dist/v1/libs/storage/TinyMapCache.d.mts +274 -0
- package/dist/v1/libs/storage/TinyMapCache.d.mts.map +1 -0
- package/dist/v1/libs/storage/TinyMapCache.mjs +333 -0
- package/dist/v1/libs/storage/TinySetMapDatabase.cjs +1167 -0
- package/dist/v1/libs/storage/TinySetMapDatabase.d.mts +603 -0
- package/dist/v1/libs/storage/TinySetMapDatabase.d.mts.map +1 -0
- package/dist/v1/libs/storage/TinySetMapDatabase.mjs +1059 -0
- package/dist/v1/libs/sw/browser/TinyNotificationAdapter.cjs +126 -0
- package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts +132 -0
- package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts.map +1 -0
- package/dist/v1/libs/sw/browser/TinyNotificationAdapter.mjs +109 -0
- package/dist/v1/libs/sw/browser/TinyPushManager.cjs +310 -0
- package/dist/v1/libs/sw/browser/TinyPushManager.d.mts +168 -0
- package/dist/v1/libs/sw/browser/TinyPushManager.d.mts.map +1 -0
- package/dist/v1/libs/sw/browser/TinyPushManager.mjs +264 -0
- package/dist/v1/libs/sw/browser/TinyServiceWorker.cjs +1060 -0
- package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts +348 -0
- package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts.map +1 -0
- package/dist/v1/libs/sw/browser/TinyServiceWorker.mjs +933 -0
- package/dist/v1/libs/sw/browser/plugins/TabManager.cjs +315 -0
- package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts +178 -0
- package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts.map +1 -0
- package/dist/v1/libs/sw/browser/plugins/TabManager.mjs +274 -0
- package/dist/v1/libs/sw/browser/utils.cjs +28 -0
- package/dist/v1/libs/sw/browser/utils.d.mts +8 -0
- package/dist/v1/libs/sw/browser/utils.d.mts.map +1 -0
- package/dist/v1/libs/sw/browser/utils.mjs +21 -0
- package/dist/v1/libs/sw/service/TinyPushRouter.cjs +222 -0
- package/dist/v1/libs/sw/service/TinyPushRouter.d.mts +138 -0
- package/dist/v1/libs/sw/service/TinyPushRouter.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/TinyPushRouter.mjs +201 -0
- package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.cjs +3016 -0
- package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts +993 -0
- package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.mjs +2558 -0
- package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.cjs +88 -0
- package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts +32 -0
- package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.mjs +69 -0
- package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.cjs +112 -0
- package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts +31 -0
- package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.mjs +91 -0
- package/dist/v1/libs/sw/service/plugins/Ping.cjs +32 -0
- package/dist/v1/libs/sw/service/plugins/Ping.d.mts +9 -0
- package/dist/v1/libs/sw/service/plugins/Ping.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/plugins/Ping.mjs +25 -0
- package/dist/v1/libs/sw/service/plugins/TabManager.cjs +457 -0
- package/dist/v1/libs/sw/service/plugins/TabManager.d.mts +91 -0
- package/dist/v1/libs/sw/service/plugins/TabManager.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/plugins/TabManager.mjs +372 -0
- package/dist/v1/libs/sw/service/plugins/ViteFileDetector.cjs +180 -0
- package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts +28 -0
- package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/plugins/ViteFileDetector.mjs +148 -0
- package/dist/v1/libs/sw/service/shared/TinyPushPayload.cjs +199 -0
- package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts +80 -0
- package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts.map +1 -0
- package/dist/v1/libs/sw/service/shared/TinyPushPayload.mjs +174 -0
- package/dist/v1/libs/sw/utils.cjs +57 -0
- package/dist/v1/libs/sw/utils.d.mts +173 -0
- package/dist/v1/libs/sw/utils.d.mts.map +1 -0
- package/dist/v1/libs/sw/utils.mjs +50 -0
- package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.cjs +57 -0
- package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts +39 -0
- package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts.map +1 -0
- package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.mjs +48 -0
- package/dist/v1/libs/text/TinyI18/Browser.cjs +64 -0
- package/dist/v1/libs/text/TinyI18/Browser.d.mts +47 -0
- package/dist/v1/libs/text/TinyI18/Browser.d.mts.map +1 -0
- package/dist/v1/libs/text/TinyI18/Browser.mjs +57 -0
- package/dist/v1/libs/text/TinyI18/Node.cjs +49 -0
- package/dist/v1/libs/text/TinyI18/Node.d.mts +38 -0
- package/dist/v1/libs/text/TinyI18/Node.d.mts.map +1 -0
- package/dist/v1/libs/text/TinyI18/Node.mjs +43 -0
- package/dist/v1/libs/text/TinyI18/browser-utils.cjs +17 -0
- package/dist/v1/libs/text/TinyI18/browser-utils.d.mts +8 -0
- package/dist/v1/libs/text/TinyI18/browser-utils.d.mts.map +1 -0
- package/dist/v1/libs/text/TinyI18/browser-utils.mjs +13 -0
- package/dist/v1/libs/text/{TinyI18.cjs → TinyI18/index.cjs} +205 -104
- package/dist/v1/libs/text/{TinyI18.d.mts → TinyI18/index.d.mts} +141 -92
- package/dist/v1/libs/text/TinyI18/index.d.mts.map +1 -0
- package/dist/v1/libs/text/{TinyI18.mjs → TinyI18/index.mjs} +195 -101
- package/dist/v1/libs/tools/TinyBrowserMonitor.cjs +1088 -0
- package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts +621 -0
- package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyBrowserMonitor.mjs +940 -0
- package/dist/v1/libs/tools/TinyDebugger.cjs +180 -19
- package/dist/v1/libs/tools/TinyDebugger.d.mts +220 -24
- package/dist/v1/libs/tools/TinyDebugger.d.mts.map +1 -1
- package/dist/v1/libs/tools/TinyDebugger.mjs +161 -19
- package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.cjs +256 -0
- package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts +125 -0
- package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.mjs +223 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.cjs +23 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts +17 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.mjs +19 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.cjs +23 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts +17 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.mjs +19 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.cjs +390 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts +9 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.mjs +387 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.cjs +2 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts +27 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.mjs +12 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/LICENSE +53 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.cjs +405 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts +34 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.mjs +342 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.cjs +23 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts +17 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.mjs +19 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.cjs +327 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts +9 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.mjs +324 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.cjs +268 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts +107 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.mjs +238 -0
- package/dist/v1/libs/tools/TinyPasswordValidator.cjs +491 -0
- package/dist/v1/libs/tools/TinyPasswordValidator.d.mts +246 -0
- package/dist/v1/libs/tools/TinyPasswordValidator.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyPasswordValidator.mjs +434 -0
- package/dist/v1/libs/tools/TinyPkgExportValidator.cjs +48 -0
- package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts +14 -0
- package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts.map +1 -1
- package/dist/v1/libs/tools/TinyPkgExportValidator.mjs +44 -0
- package/dist/v1/libs/tools/TinySiteMap.cjs +1029 -0
- package/dist/v1/libs/tools/TinySiteMap.d.mts +429 -0
- package/dist/v1/libs/tools/TinySiteMap.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinySiteMap.mjs +910 -0
- package/dist/v1/libs/tools/TinySiteMapStream.cjs +121 -0
- package/dist/v1/libs/tools/TinySiteMapStream.d.mts +51 -0
- package/dist/v1/libs/tools/TinySiteMapStream.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinySiteMapStream.mjs +85 -0
- package/dist/v1/libs/tools/TinyURLSecurityVerifier.cjs +444 -0
- package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts +217 -0
- package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyURLSecurityVerifier.mjs +394 -0
- package/dist/v1/libs/tools/TinyUriParser/BlueSky.cjs +613 -0
- package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts +152 -0
- package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyUriParser/BlueSky.mjs +527 -0
- package/dist/v1/libs/tools/TinyUriParser/Discord.cjs +1119 -0
- package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts +306 -0
- package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyUriParser/Discord.mjs +968 -0
- package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.cjs +469 -0
- package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts +80 -0
- package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.mjs +379 -0
- package/dist/v1/libs/tools/TinyUriParser.cjs +217 -0
- package/dist/v1/libs/tools/TinyUriParser.d.mts +109 -0
- package/dist/v1/libs/tools/TinyUriParser.d.mts.map +1 -0
- package/dist/v1/libs/tools/TinyUriParser.mjs +183 -0
- package/dist/v1/libs/utils/TinyCloner.cjs +466 -0
- package/dist/v1/libs/utils/TinyCloner.d.mts +221 -0
- package/dist/v1/libs/utils/TinyCloner.d.mts.map +1 -0
- package/dist/v1/libs/utils/TinyCloner.mjs +416 -0
- package/dist/v1/libs/utils/TinyPromiseQueue.cjs +1 -1
- package/dist/v1/libs/utils/TinyPromiseQueue.d.mts +2 -2
- package/dist/v1/libs/utils/TinyPromiseQueue.d.mts.map +1 -1
- package/dist/v1/libs/utils/TinyPromiseQueue.mjs +1 -1
- package/dist/v1/libs/utils/TinyThrottledApi.cjs +333 -0
- package/dist/v1/libs/utils/TinyThrottledApi.d.mts +163 -0
- package/dist/v1/libs/utils/TinyThrottledApi.d.mts.map +1 -0
- package/dist/v1/libs/utils/TinyThrottledApi.mjs +294 -0
- package/dist/v1/libs/worker/browser/TinyWebWorker.cjs +342 -0
- package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts +97 -0
- package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts.map +1 -0
- package/dist/v1/libs/worker/browser/TinyWebWorker.mjs +305 -0
- package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.cjs +346 -0
- package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts +127 -0
- package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts.map +1 -0
- package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.mjs +304 -0
- package/dist/v1/regexp/Email.cjs +185 -0
- package/dist/v1/regexp/Email.d.mts +73 -0
- package/dist/v1/regexp/Email.d.mts.map +1 -0
- package/dist/v1/regexp/Email.mjs +153 -0
- package/dist/v1/regexp/Glob.cjs +293 -0
- package/dist/v1/regexp/Glob.d.mts +45 -0
- package/dist/v1/regexp/Glob.d.mts.map +1 -0
- package/dist/v1/regexp/Glob.mjs +260 -0
- package/dist/v1/regexp/Ipv4.cjs +57 -0
- package/dist/v1/regexp/Ipv4.d.mts +29 -0
- package/dist/v1/regexp/Ipv4.d.mts.map +1 -0
- package/dist/v1/regexp/Ipv4.mjs +45 -0
- package/dist/v1/regexp/Ipv6.cjs +67 -0
- package/dist/v1/regexp/Ipv6.d.mts +29 -0
- package/dist/v1/regexp/Ipv6.d.mts.map +1 -0
- package/dist/v1/regexp/Ipv6.mjs +54 -0
- package/dist/v1/regexp/SegmentExtractor.cjs +145 -0
- package/dist/v1/regexp/SegmentExtractor.d.mts +91 -0
- package/dist/v1/regexp/SegmentExtractor.d.mts.map +1 -0
- package/dist/v1/regexp/SegmentExtractor.mjs +116 -0
- package/dist/v1/regexp/UrlDetector.cjs +125 -0
- package/dist/v1/regexp/UrlDetector.d.mts +67 -0
- package/dist/v1/regexp/UrlDetector.d.mts.map +1 -0
- package/dist/v1/regexp/UrlDetector.mjs +102 -0
- package/dist/v1/regexp/Username/index.cjs +233 -0
- package/dist/v1/regexp/Username/index.d.mts +77 -0
- package/dist/v1/regexp/Username/index.d.mts.map +1 -0
- package/dist/v1/regexp/Username/index.mjs +199 -0
- package/dist/v1/regexp/Username/jsDoc.cjs +2 -0
- package/dist/v1/regexp/Username/jsDoc.d.mts +57 -0
- package/dist/v1/regexp/Username/jsDoc.d.mts.map +1 -0
- package/dist/v1/regexp/Username/jsDoc.mjs +18 -0
- package/dist/v1/regexp/Username/templates/BlueSky.cjs +56 -0
- package/dist/v1/regexp/Username/templates/BlueSky.d.mts +35 -0
- package/dist/v1/regexp/Username/templates/BlueSky.d.mts.map +1 -0
- package/dist/v1/regexp/Username/templates/BlueSky.mjs +52 -0
- package/dist/v1/regexp/Username/templates/Discord.cjs +505 -0
- package/dist/v1/regexp/Username/templates/Discord.d.mts +209 -0
- package/dist/v1/regexp/Username/templates/Discord.d.mts.map +1 -0
- package/dist/v1/regexp/Username/templates/Discord.mjs +458 -0
- package/dist/v1/regexp/Username/templates/MatrixProtocol.cjs +143 -0
- package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts +70 -0
- package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts.map +1 -0
- package/dist/v1/regexp/Username/templates/MatrixProtocol.mjs +128 -0
- package/dist/v1/regexp/Username/templates/deprecated/Discord.cjs +24 -0
- package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts +17 -0
- package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts.map +1 -0
- package/dist/v1/regexp/Username/templates/deprecated/Discord.mjs +20 -0
- package/dist/v1/regexp/Username/templates/index.cjs +11 -0
- package/dist/v1/regexp/Username/templates/index.d.mts +5 -0
- package/dist/v1/regexp/Username/templates/index.d.mts.map +1 -0
- package/dist/v1/regexp/Username/templates/index.mjs +4 -0
- package/dist/v1/regexp/index.cjs +41 -0
- package/dist/v1/regexp/index.d.mts +9 -0
- package/dist/v1/regexp/index.d.mts.map +1 -0
- package/dist/v1/regexp/index.mjs +8 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.cjs +64 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts +11 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts.map +1 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.mjs +51 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.cjs +66 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts +11 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts.map +1 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.mjs +51 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.cjs +39 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts +11 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts.map +1 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.mjs +28 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.cjs +494 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts +142 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts.map +1 -0
- package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.mjs +445 -0
- package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.cjs +725 -0
- package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts +293 -0
- package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts.map +1 -0
- package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs +614 -0
- package/dist/v1/webTemplates/bootstrap/5.3/scss/input/Placeholder-Colors-Fix.scss +64 -0
- package/dist/v1/webTemplates/bootstrap/5.3/scss/spacing/Spacing-Plus.scss +31 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.cjs +135 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts +83 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts.map +1 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.mjs +120 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.cjs +127 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts +95 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts.map +1 -0
- package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.mjs +109 -0
- package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.cjs +83 -0
- package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts +46 -0
- package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts.map +1 -0
- package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.mjs +71 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.cjs +493 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts +67 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts.map +1 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.mjs +399 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.cjs +35 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts +6 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts.map +1 -0
- package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.mjs +29 -0
- package/docs/info/RegExp.md +74 -0
- package/docs/v1/Exports.md +111 -0
- package/docs/v1/README.md +117 -13
- package/docs/v1/basics/asyncReplace.md +2 -0
- package/docs/v1/basics/browserDetector.md +28 -11
- package/docs/v1/basics/crypto.md +85 -0
- package/docs/v1/basics/deprecated/html.md +2 -0
- package/docs/v1/basics/deprecated/objFilter.md +2 -0
- package/docs/v1/basics/html.md +2 -0
- package/docs/v1/basics/objChecker.md +55 -0
- package/docs/v1/basics/objFilter.md +57 -86
- package/docs/v1/basics/promiseUtils.md +12 -3
- package/docs/v1/basics/text.md +0 -1
- package/docs/v1/libs/array/TinyArrayComparator.md +50 -39
- package/docs/v1/libs/fs/TinyFS.md +752 -0
- package/docs/v1/libs/fs/TinyOPFSFileSystem.md +495 -0
- package/docs/v1/libs/fs/TinyStorageBucketFileSystem.md +407 -0
- package/docs/v1/libs/plugin/TinyPlugin.md +441 -0
- package/docs/v1/libs/plugin/TinyVersion.md +145 -0
- package/docs/v1/libs/router/TinyRouter.md +216 -0
- package/docs/v1/libs/storage/TinyMapCache.md +219 -0
- package/docs/v1/libs/storage/TinySetMapDatabase.md +478 -0
- package/docs/v1/libs/sw/browser/TinyNotificationAdapter.md +280 -0
- package/docs/v1/libs/sw/browser/TinyPushManager.md +782 -0
- package/docs/v1/libs/sw/browser/TinyServiceWorker.md +365 -0
- package/docs/v1/libs/sw/browser/plugins/TabManager.md +133 -0
- package/docs/v1/libs/sw/service/TinyPushRouter.md +314 -0
- package/docs/v1/libs/sw/service/TinyServiceWorkerEngine.md +748 -0
- package/docs/v1/libs/sw/service/plugins/GlobBypassPlugin.md +229 -0
- package/docs/v1/libs/sw/service/plugins/GlobCachePlugin.md +91 -0
- package/docs/v1/libs/sw/service/plugins/Ping.md +36 -0
- package/docs/v1/libs/sw/service/plugins/TabManager.md +64 -0
- package/docs/v1/libs/sw/service/plugins/ViteFileDetector.md +92 -0
- package/docs/v1/libs/sw/service/shared/TinyPushPayload.md +316 -0
- package/docs/v1/libs/text/TinyI18.md +80 -56
- package/docs/v1/libs/tools/TinyBrowserMonitor.md +170 -0
- package/docs/v1/libs/tools/TinyDebugger.md +117 -1
- package/docs/v1/libs/tools/TinyHtmlTagRegexBuilder.md +141 -0
- package/docs/v1/libs/tools/TinyHttpResponseRegistry.md +129 -0
- package/docs/v1/libs/tools/TinyPasswordValidator.md +153 -0
- package/docs/v1/libs/tools/TinyPkgExportValidator.md +45 -1
- package/docs/v1/libs/tools/TinySiteMap.md +134 -0
- package/docs/v1/libs/tools/TinySiteMapStream.md +97 -0
- package/docs/v1/libs/tools/TinyURLSecurityVerifier.md +146 -0
- package/docs/v1/libs/tools/TinyUriParser/Discord.md +374 -0
- package/docs/v1/libs/tools/TinyUriParser/MatrixProtocol.md +54 -0
- package/docs/v1/libs/tools/TinyUriParser.md +128 -0
- package/docs/v1/libs/utils/TinyCloner.md +126 -0
- package/docs/v1/libs/utils/TinyPromiseQueue.md +1 -1
- package/docs/v1/libs/utils/TinyThrottledApi.md +219 -0
- package/docs/v1/libs/worker/browser/TinyWebWorker.md +331 -0
- package/docs/v1/libs/worker/engine/TinyWebWorkerEngine.md +137 -0
- package/docs/v1/regexp/Email.md +127 -0
- package/docs/v1/regexp/Glob.md +155 -0
- package/docs/v1/regexp/IPv4.md +103 -0
- package/docs/v1/regexp/IPv6.md +122 -0
- package/docs/v1/regexp/SegmentExtractor.md +120 -0
- package/docs/v1/regexp/UrlDetector.md +117 -0
- package/docs/v1/regexp/Username/Base.md +131 -0
- package/docs/v1/regexp/Username/Discord.md +267 -0
- package/docs/v1/regexp/Username/MatrixProtocol.md +131 -0
- package/docs/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters.md +569 -0
- package/docs/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.md +174 -0
- package/docs/v1/webTemplates/media/MediaValidator/v1/Browser.md +123 -0
- package/docs/v1/webTemplates/media/MediaValidator/v1/Node.md +136 -0
- package/docs/v1/webTemplates/multiformats/14.0/IPFSHasher.md +310 -0
- package/docs/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.md +131 -0
- package/docs/v1/webTemplates/vite/7.3/plugins/githubUtils.md +50 -0
- package/package.json +313 -18
- package/types/EventEmitter.d.ts +48 -0
- package/dist/v1/libs/text/TinyI18.d.mts.map +0 -1
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var fs = require('fs');
|
|
5
|
-
var path = require('path');
|
|
6
|
-
var tools = require('../utils/tools.cjs');
|
|
3
|
+
var tools = require('../../utils/tools.cjs');
|
|
7
4
|
|
|
8
5
|
const checkDestroy = tools.createCheckDestroyed('TinyI18');
|
|
9
6
|
|
|
@@ -17,74 +14,76 @@ const checkDestroy = tools.createCheckDestroyed('TinyI18');
|
|
|
17
14
|
/**
|
|
18
15
|
* Dictionary of translation keys mapped to values.
|
|
19
16
|
*
|
|
20
|
-
* @typedef {Record<string, any>} Dict
|
|
17
|
+
* @typedef {Record<string, any>} Dict - A collection of key-value pairs for translations.
|
|
21
18
|
*/
|
|
22
19
|
|
|
23
20
|
/**
|
|
24
21
|
* Represents a translation entry as it appears in JSON files.
|
|
25
22
|
*
|
|
26
|
-
* @typedef {
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
|
|
31
|
-
*
|
|
32
|
-
* `$pattern` - Regex string (will be compiled into RegExp).
|
|
33
|
-
*
|
|
34
|
-
* `$fn` - Helper function name associated with this entry.
|
|
23
|
+
* @typedef {Object} FileValueBase
|
|
24
|
+
* @property {string} $pattern - Regex string (will be compiled into RegExp).
|
|
25
|
+
* @property {string} $fn - Helper function name associated with this entry.
|
|
26
|
+
* @property {string} [key] - Additional key-value pairs for interpolation or extra metadata.
|
|
27
|
+
*/
|
|
35
28
|
|
|
36
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Represents a translation entry as it appears in JSON files, extending
|
|
31
|
+
* the base pattern/function fields with arbitrary string key-value pairs.
|
|
32
|
+
*
|
|
33
|
+
* @typedef {FileValueBase & { [key: string]: string }} FileValue
|
|
37
34
|
*/
|
|
38
35
|
|
|
39
36
|
/**
|
|
40
37
|
* Represents a valid locale code string.
|
|
41
38
|
* Example: "en", "pt-BR", "fr".
|
|
42
39
|
*
|
|
43
|
-
* @typedef {string} LocaleCode
|
|
40
|
+
* @typedef {string} LocaleCode - A string representing a valid locale identifier.
|
|
44
41
|
*/
|
|
45
42
|
|
|
46
43
|
/**
|
|
47
|
-
* Value types stored per locale
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* - { $pattern: RegExp, value: string | { $fn: string, args?: any } | Function }
|
|
51
|
-
* - { $fn: string, args?: any } // in file mode; resolved to a registered function
|
|
44
|
+
* Value types stored per locale.
|
|
45
|
+
*
|
|
46
|
+
* @typedef {string|{ $fn: string; args?: any }} TranslationValue - The type of a value used in a translation entry.
|
|
52
47
|
*/
|
|
53
48
|
|
|
54
49
|
/**
|
|
55
|
-
*
|
|
50
|
+
* A resolved translation value.
|
|
56
51
|
*
|
|
57
|
-
* @typedef {
|
|
58
|
-
* @property {RegExp} $pattern - Compiled regular expression used for matching.
|
|
59
|
-
* @property {any} value - Translation value or resolver function associated with the pattern.
|
|
60
|
-
* @property {any} elseValue - Translation value or resolver function associated with the pattern.
|
|
52
|
+
* @typedef {string|null} TranslateResult - A resolved translation value, typically a string or null.
|
|
61
53
|
*/
|
|
62
54
|
|
|
63
55
|
/**
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* @
|
|
67
|
-
* @property {
|
|
56
|
+
* Represents a single regex-based translation entry.
|
|
57
|
+
*
|
|
58
|
+
* @typedef {Object} PatternEntry - A representation of a translation entry that matches via a regular expression.
|
|
59
|
+
* @property {RegExp} $pattern - Compiled regular expression used for matching.
|
|
60
|
+
* @property {TranslationValue} value - Translation value or resolver function associated with the pattern.
|
|
61
|
+
* @property {TranslationValue} elseValue - Translation value or resolver function associated with the pattern.
|
|
68
62
|
*/
|
|
69
63
|
|
|
70
64
|
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* @
|
|
74
|
-
* @property {
|
|
75
|
-
* @property {
|
|
76
|
-
* @property {
|
|
65
|
+
* Configuration options for the TinyI18 instance.
|
|
66
|
+
*
|
|
67
|
+
* @typedef {Object} TinyI18Options - Configuration options for the TinyI18 constructor.
|
|
68
|
+
* @property {ModeTypes} mode - The operating mode of the instance.
|
|
69
|
+
* @property {LocaleCode} defaultLocale - The fallback locale used when a key is missing.
|
|
70
|
+
* @property {string} [basePath] - Required in file mode. Directory containing <locale>.json files.
|
|
71
|
+
* @property {Dict} [localResources] - Optional initial map { locale: dict } for local mode.
|
|
72
|
+
* @property {boolean} [strict=true] - If true, throws on missing keys or invalid data; else returns fallback.
|
|
73
|
+
* @property {boolean} [acceptNullResults=false] - If true, returns null instead of the key for missing translations.
|
|
77
74
|
*/
|
|
78
75
|
|
|
79
76
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
77
|
+
* Options used to customize the translation resolution process.
|
|
78
|
+
*
|
|
79
|
+
* @typedef {Object} ResolveOptions - Options to control the translation resolution process.
|
|
80
|
+
* @property {LocaleCode} [locale] - Force resolution using a specific locale first.
|
|
82
81
|
*/
|
|
83
82
|
|
|
84
83
|
/**
|
|
85
|
-
*
|
|
84
|
+
* Statistics for a specific locale.
|
|
86
85
|
*
|
|
87
|
-
* @typedef {Object} StatLocale
|
|
86
|
+
* @typedef {Object} StatLocale - Information about the contents and status of a specific locale.
|
|
88
87
|
* @property {string} locale - The locale code (e.g., "en", "pt-BR").
|
|
89
88
|
* @property {number} strings - Total number of static string entries in this locale.
|
|
90
89
|
* @property {number} patterns - Total number of regex-based pattern entries in this locale.
|
|
@@ -96,12 +95,12 @@ const checkDestroy = tools.createCheckDestroyed('TinyI18');
|
|
|
96
95
|
* Read-only view of registered helpers, exposed to function-based entries.
|
|
97
96
|
*
|
|
98
97
|
* Provides safe access to:
|
|
99
|
-
* -
|
|
100
|
-
* -
|
|
98
|
+
* - Check if a helper exists by name.
|
|
99
|
+
* - Call a helper by name, passing arguments.
|
|
101
100
|
*
|
|
102
101
|
* @template {any} T
|
|
103
102
|
* @template {any} R
|
|
104
|
-
* @typedef {Object} HelpersReadonly
|
|
103
|
+
* @typedef {Object} HelpersReadonly - A read-only interface for interacting with registered helpers.
|
|
105
104
|
* @property {(name: string) => boolean} [has] - Check if a helper with given name is registered.
|
|
106
105
|
* @property {(name: string, arg: T, extras?: HelpersReadonly<T, R>) => R} [call] -
|
|
107
106
|
* Invoke a helper by name with an argument and optional extras.
|
|
@@ -113,9 +112,11 @@ const checkDestroy = tools.createCheckDestroyed('TinyI18');
|
|
|
113
112
|
* - Receives user-supplied parameters and a read-only facade for calling other helpers.
|
|
114
113
|
* - Must return a string (e.g. processed, interpolated, or formatted output).
|
|
115
114
|
*
|
|
115
|
+
* @template {any} T
|
|
116
|
+
* @template {any} R
|
|
116
117
|
* @callback HelperCallback
|
|
117
118
|
* @param {Dict} params - Key-value parameters passed from the translation entry.
|
|
118
|
-
* @param {HelpersReadonly<
|
|
119
|
+
* @param {HelpersReadonly<T, R>} helpers - Read-only access to other registered helpers.
|
|
119
120
|
* @returns {string} Processed string result.
|
|
120
121
|
*/
|
|
121
122
|
|
|
@@ -131,16 +132,90 @@ const checkDestroy = tools.createCheckDestroyed('TinyI18');
|
|
|
131
132
|
* - Safe: no dynamic code eval from files; functions in file mode are referenced by name ("$fn").
|
|
132
133
|
*/
|
|
133
134
|
class TinyI18 {
|
|
135
|
+
/**
|
|
136
|
+
* Cached path join function used to resolve locale file paths.
|
|
137
|
+
* @type {((...paths: string[]) => string)|null}
|
|
138
|
+
*/
|
|
139
|
+
static #join = null;
|
|
140
|
+
/**
|
|
141
|
+
* Cached file existence check function.
|
|
142
|
+
* @type {((path: string) => boolean)|null|false}
|
|
143
|
+
*/
|
|
144
|
+
static #existsSync = null;
|
|
145
|
+
/**
|
|
146
|
+
* Cached asynchronous file read function.
|
|
147
|
+
* @type {((path: string, options: BufferEncoding) => Promise<string>)|null}
|
|
148
|
+
*/
|
|
149
|
+
static #readFile = null;
|
|
150
|
+
/**
|
|
151
|
+
* Cached asynchronous file write function.
|
|
152
|
+
* @type {((path: string, data: string, options: BufferEncoding) => Promise<any>)|null}
|
|
153
|
+
*/
|
|
154
|
+
static #writeFile = null;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Sets the path join function used to resolve locale file paths.
|
|
158
|
+
* Throws if a non-function value is provided or if the function has already been set.
|
|
159
|
+
* @param {(...paths: string[]) => string} value - The path join function to cache.
|
|
160
|
+
*/
|
|
161
|
+
static set _join(value) {
|
|
162
|
+
if (typeof value !== 'function') throw new TypeError('TinyI18: "_join" must be a function');
|
|
163
|
+
if (TinyI18.#join !== null) throw new Error('TinyI18: "_join" has already been set');
|
|
164
|
+
TinyI18.#join = value;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Sets the file existence check function.
|
|
169
|
+
* Throws if a non-function value is provided or if the function has already been set.
|
|
170
|
+
* @param {((path: string) => boolean)|false} value - The existence check function, or false to disable.
|
|
171
|
+
*/
|
|
172
|
+
static set _existsSync(value) {
|
|
173
|
+
if (typeof value !== 'function' && value !== false)
|
|
174
|
+
throw new TypeError('TinyI18: "_existsSync" must be a function or false');
|
|
175
|
+
if (TinyI18.#existsSync !== null)
|
|
176
|
+
throw new Error('TinyI18: "_existsSync" has already been set');
|
|
177
|
+
TinyI18.#existsSync = value;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Sets the asynchronous file read function.
|
|
182
|
+
* Throws if a non-function value is provided or if the function has already been set.
|
|
183
|
+
* @param {(path: string, options: BufferEncoding) => Promise<string>} value - The file read function to cache.
|
|
184
|
+
*/
|
|
185
|
+
static set _readFile(value) {
|
|
186
|
+
if (typeof value !== 'function') throw new TypeError('TinyI18: "_readFile" must be a function');
|
|
187
|
+
if (TinyI18.#readFile !== null) throw new Error('TinyI18: "_readFile" has already been set');
|
|
188
|
+
TinyI18.#readFile = value;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Sets the asynchronous file write function.
|
|
193
|
+
* Throws if a non-function value is provided or if the function has already been set.
|
|
194
|
+
* @param {(path: string, data: string, options: BufferEncoding) => Promise<void>} value - The file write function to cache.
|
|
195
|
+
*/
|
|
196
|
+
static set _writeFile(value) {
|
|
197
|
+
if (typeof value !== 'function')
|
|
198
|
+
throw new TypeError('TinyI18: "_writeFile" must be a function');
|
|
199
|
+
if (TinyI18.#writeFile !== null) throw new Error('TinyI18: "_writeFile" has already been set');
|
|
200
|
+
TinyI18.#writeFile = value;
|
|
201
|
+
}
|
|
202
|
+
|
|
134
203
|
/**
|
|
135
204
|
* Merges multiple JSON locale files into a single file for TinyI18 usage.
|
|
136
|
-
*
|
|
205
|
+
*
|
|
206
|
+
* @param {Object} options - Configuration for the merge operation.
|
|
137
207
|
* @param {string[]} options.files - List of JSON file paths to merge.
|
|
138
208
|
* @param {string} options.output - Path where the merged JSON file will be written.
|
|
139
|
-
* @param {number} [options.spaces=0] - Number of spaces to use for indentation in the output file
|
|
209
|
+
* @param {number} [options.spaces=0] - Number of spaces to use for indentation in the output file.
|
|
140
210
|
* @throws {TypeError} If arguments are invalid.
|
|
141
211
|
* @throws {Error} If file reading or writing fails.
|
|
142
212
|
*/
|
|
143
213
|
static async mergeLocaleFiles({ files, output, spaces = 0 }) {
|
|
214
|
+
if (TinyI18.#existsSync === null || TinyI18.#readFile === null || TinyI18.#writeFile === null)
|
|
215
|
+
throw new Error(
|
|
216
|
+
'TinyI18: "mergeLocaleFiles" requires "_existsSync", "_readFile", and "_writeFile" to be set',
|
|
217
|
+
);
|
|
218
|
+
|
|
144
219
|
if (typeof spaces !== 'number' || Number.isNaN(spaces) || spaces < 0)
|
|
145
220
|
throw new TypeError('mergeLocaleFiles: "spaces" must be a non-negative number');
|
|
146
221
|
if (!Array.isArray(files) || files.length === 0)
|
|
@@ -153,10 +228,10 @@ class TinyI18 {
|
|
|
153
228
|
for (const filePath of files) {
|
|
154
229
|
if (typeof filePath !== 'string' || !filePath)
|
|
155
230
|
throw new TypeError('mergeLocaleFiles: each file path must be a non-empty string');
|
|
156
|
-
if (!
|
|
231
|
+
if (TinyI18.#existsSync !== false && !TinyI18.#existsSync(filePath))
|
|
157
232
|
throw new Error(`mergeLocaleFiles: file "${filePath}" does not exist`);
|
|
158
233
|
|
|
159
|
-
const raw = await
|
|
234
|
+
const raw = await TinyI18.#readFile(filePath, 'utf-8');
|
|
160
235
|
let json;
|
|
161
236
|
try {
|
|
162
237
|
json = JSON.parse(raw);
|
|
@@ -168,11 +243,11 @@ class TinyI18 {
|
|
|
168
243
|
Object.assign(merged, json);
|
|
169
244
|
}
|
|
170
245
|
|
|
171
|
-
await
|
|
246
|
+
await TinyI18.#writeFile(output, JSON.stringify(merged, null, spaces), 'utf-8');
|
|
172
247
|
}
|
|
173
248
|
|
|
174
249
|
/**
|
|
175
|
-
*
|
|
250
|
+
* Indicates whether the instance has been destroyed.
|
|
176
251
|
* @type {boolean}
|
|
177
252
|
*/
|
|
178
253
|
#destroyed = false;
|
|
@@ -186,33 +261,31 @@ class TinyI18 {
|
|
|
186
261
|
return this.#destroyed;
|
|
187
262
|
}
|
|
188
263
|
|
|
189
|
-
/** @type {ModeTypes} */
|
|
264
|
+
/** @type {ModeTypes} - The current operating mode of the instance. */
|
|
190
265
|
#mode;
|
|
191
|
-
/** @type {LocaleCode} */
|
|
266
|
+
/** @type {LocaleCode} - The default fallback locale. */
|
|
192
267
|
#defaultLocale;
|
|
193
|
-
/** @type {LocaleCode|null} */
|
|
268
|
+
/** @type {LocaleCode|null} - The currently active locale. */
|
|
194
269
|
#currentLocale = null;
|
|
195
|
-
/** @type {boolean} */
|
|
270
|
+
/** @type {boolean} - Whether to throw errors on missing keys or invalid data. */
|
|
196
271
|
#strict;
|
|
197
|
-
/** @type {
|
|
272
|
+
/** @type {boolean} - Whether to return null instead of the key for missing translations. */
|
|
273
|
+
#acceptNullResults = false;
|
|
274
|
+
/** @type {string|null} - The base directory for file-mode operations. */
|
|
198
275
|
#basePath = null;
|
|
199
276
|
|
|
200
|
-
/** @type {Map<LocaleCode, Dict>} */
|
|
201
|
-
#stringTables = new Map();
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
// Helpers registry for function-based entries in both modes.
|
|
207
|
-
/** @type {Map<string, HelperCallback>} */
|
|
277
|
+
/** @type {Map<LocaleCode, Dict>} - Internal storage for string translations per locale. */
|
|
278
|
+
#stringTables = new Map();
|
|
279
|
+
/** @type {Map<LocaleCode, PatternEntry[]>} - Internal storage for regex pattern entries per locale. */
|
|
280
|
+
#patternTables = new Map();
|
|
281
|
+
/** @type {Map<string, HelperCallback<any, any>>} - Registry of available helper functions. */
|
|
208
282
|
#helpers = new Map();
|
|
209
|
-
|
|
210
|
-
/** @type {Map<string, RegExp>} */
|
|
283
|
+
/** @type {Map<string, RegExp>} - Cache for compiled regular expression objects. */
|
|
211
284
|
#regexCache = new Map();
|
|
212
285
|
|
|
213
286
|
/**
|
|
214
287
|
* Gets the currently selected locale, or null if only default is active.
|
|
215
|
-
* @returns {LocaleCode|null}
|
|
288
|
+
* @returns {LocaleCode|null} The currently active locale code, or null.
|
|
216
289
|
*/
|
|
217
290
|
get currentLocale() {
|
|
218
291
|
checkDestroy(this.#destroyed);
|
|
@@ -251,6 +324,15 @@ class TinyI18 {
|
|
|
251
324
|
return this.#strict;
|
|
252
325
|
}
|
|
253
326
|
|
|
327
|
+
/**
|
|
328
|
+
* Whether null results are accepted when a translation is missing.
|
|
329
|
+
* @type {boolean}
|
|
330
|
+
*/
|
|
331
|
+
get acceptNullResults() {
|
|
332
|
+
checkDestroy(this.#destroyed);
|
|
333
|
+
return this.#acceptNullResults;
|
|
334
|
+
}
|
|
335
|
+
|
|
254
336
|
/**
|
|
255
337
|
* Base directory path used in `"file"` mode to locate locale JSON files.
|
|
256
338
|
* - In `"local"` mode this will always be `null`.
|
|
@@ -264,7 +346,7 @@ class TinyI18 {
|
|
|
264
346
|
|
|
265
347
|
/**
|
|
266
348
|
* Returns basic stats for debugging/memory insights.
|
|
267
|
-
* @returns {StatLocale[]}
|
|
349
|
+
* @returns {StatLocale[]} Array of statistics for each registered locale.
|
|
268
350
|
*/
|
|
269
351
|
get stats() {
|
|
270
352
|
checkDestroy(this.#destroyed);
|
|
@@ -276,7 +358,7 @@ class TinyI18 {
|
|
|
276
358
|
/**
|
|
277
359
|
* Deep-cloned view of string tables (Map → Object).
|
|
278
360
|
* Preserves strings, $fn objects, and functions.
|
|
279
|
-
* @returns {Record<string, Dict>}
|
|
361
|
+
* @returns {Record<string, Dict>} A deep clone of the string tables.
|
|
280
362
|
*/
|
|
281
363
|
get stringTables() {
|
|
282
364
|
checkDestroy(this.#destroyed);
|
|
@@ -291,7 +373,7 @@ class TinyI18 {
|
|
|
291
373
|
/**
|
|
292
374
|
* Deep-cloned view of pattern tables (Map → Object).
|
|
293
375
|
* Recreates RegExp objects to avoid mutation.
|
|
294
|
-
* @returns {Record<string, PatternEntry[]>}
|
|
376
|
+
* @returns {Record<string, PatternEntry[]>} A deep clone of the pattern tables.
|
|
295
377
|
*/
|
|
296
378
|
get patternTables() {
|
|
297
379
|
checkDestroy(this.#destroyed);
|
|
@@ -310,11 +392,11 @@ class TinyI18 {
|
|
|
310
392
|
/**
|
|
311
393
|
* Deep-cloned view of helpers (Map → Object).
|
|
312
394
|
* Functions are referenced (cannot deep clone functions).
|
|
313
|
-
* @returns {Record<string, HelperCallback
|
|
395
|
+
* @returns {Record<string, HelperCallback<any, any>>} A copy of the helpers registry.
|
|
314
396
|
*/
|
|
315
397
|
get helpers() {
|
|
316
398
|
checkDestroy(this.#destroyed);
|
|
317
|
-
/** @type {Record<string, HelperCallback
|
|
399
|
+
/** @type {Record<string, HelperCallback<any, any>>} */
|
|
318
400
|
const obj = {};
|
|
319
401
|
for (const [name, fn] of this.#helpers.entries()) {
|
|
320
402
|
obj[name] = fn;
|
|
@@ -325,7 +407,7 @@ class TinyI18 {
|
|
|
325
407
|
/**
|
|
326
408
|
* Deep-cloned view of regex cache (Map → Object).
|
|
327
409
|
* Recreates RegExp objects to avoid mutation.
|
|
328
|
-
* @returns {Record<string, RegExp>}
|
|
410
|
+
* @returns {Record<string, RegExp>} A copy of the regex cache.
|
|
329
411
|
*/
|
|
330
412
|
get regexCache() {
|
|
331
413
|
checkDestroy(this.#destroyed);
|
|
@@ -345,8 +427,8 @@ class TinyI18 {
|
|
|
345
427
|
* - Objects/arrays are recursively cloned
|
|
346
428
|
* - Functions are returned as-is
|
|
347
429
|
* - RegExp are cloned
|
|
348
|
-
* @param {any} value
|
|
349
|
-
* @returns {any}
|
|
430
|
+
* @param {any} value - The value to clone.
|
|
431
|
+
* @returns {any} The deep-cloned value.
|
|
350
432
|
*/
|
|
351
433
|
#deepClone(value) {
|
|
352
434
|
if (
|
|
@@ -439,9 +521,11 @@ class TinyI18 {
|
|
|
439
521
|
* - function (params, helpers) => any
|
|
440
522
|
* - { $fn: string, args?: any } // file mode placeholder resolved via helpers
|
|
441
523
|
*
|
|
442
|
-
* @
|
|
443
|
-
* @
|
|
444
|
-
* @
|
|
524
|
+
* @template {any} T
|
|
525
|
+
* @template {any} R
|
|
526
|
+
* @param {string | HelperCallback<T, R> | { $fn: string; args?: any }} value - The raw translation value.
|
|
527
|
+
* @param {Dict} [params] - Data used for interpolation or helper arguments.
|
|
528
|
+
* @returns {string} The processed translation string.
|
|
445
529
|
*/
|
|
446
530
|
#materialize(value, params) {
|
|
447
531
|
if (value === null || value === undefined) {
|
|
@@ -613,18 +697,20 @@ class TinyI18 {
|
|
|
613
697
|
* - `$pattern` entries are compiled to RegExp and stored in the pattern table.
|
|
614
698
|
* - `$fn` references are preserved for later resolution via helpers.
|
|
615
699
|
*
|
|
616
|
-
* @param {LocaleCode} locale - Locale identifier (e.g
|
|
617
|
-
* @returns {Promise<void>}
|
|
700
|
+
* @param {LocaleCode} locale - Locale identifier (e.g., "en", "pt-BR").
|
|
701
|
+
* @returns {Promise<void>} A promise that resolves when the locale file has been loaded and ingested.
|
|
618
702
|
*/
|
|
619
703
|
async #loadLocaleFromFile(locale) {
|
|
704
|
+
if (TinyI18.#join === null || TinyI18.#readFile === null)
|
|
705
|
+
throw new Error('TinyI18: "file" mode requires "_join" and "_readFile" to be set');
|
|
620
706
|
if (typeof locale !== 'string' || !locale)
|
|
621
707
|
throw new TypeError('#loadLocaleFromFile: "locale" must be a non-empty string');
|
|
622
708
|
if (typeof this.#basePath !== 'string' || !this.#basePath)
|
|
623
709
|
throw new TypeError('#loadLocaleFromFile: "this.#basePath" must be a non-empty string');
|
|
624
|
-
const file =
|
|
710
|
+
const file = TinyI18.#join(this.#basePath, `${locale}.json`);
|
|
625
711
|
let json;
|
|
626
712
|
try {
|
|
627
|
-
const raw = await
|
|
713
|
+
const raw = await TinyI18.#readFile(file, 'utf8');
|
|
628
714
|
json = JSON.parse(raw);
|
|
629
715
|
} catch (err) {
|
|
630
716
|
if (!(err instanceof Error)) return;
|
|
@@ -645,7 +731,7 @@ class TinyI18 {
|
|
|
645
731
|
|
|
646
732
|
/**
|
|
647
733
|
* @param {string} prefix
|
|
648
|
-
* @param {FileValue|
|
|
734
|
+
* @param {FileValue|TranslateResult} node
|
|
649
735
|
*/
|
|
650
736
|
const walk = (prefix, node) => {
|
|
651
737
|
if (node == null) return;
|
|
@@ -696,7 +782,7 @@ class TinyI18 {
|
|
|
696
782
|
* In strict mode, throws on invalid regex; otherwise returns a never-matching regex.
|
|
697
783
|
*
|
|
698
784
|
* @param {string} src - Regex source pattern (no flags allowed).
|
|
699
|
-
* @returns {RegExp}
|
|
785
|
+
* @returns {RegExp} The compiled regular expression, or a never-matching regex in non-strict mode.
|
|
700
786
|
*/
|
|
701
787
|
#safeRegExp(src) {
|
|
702
788
|
if (typeof src !== 'string' || !src)
|
|
@@ -721,8 +807,8 @@ class TinyI18 {
|
|
|
721
807
|
* - string → returned as-is
|
|
722
808
|
* - { $fn: string, args?: any } → preserved for helper resolution
|
|
723
809
|
*
|
|
724
|
-
* @param {string|FileValue} v
|
|
725
|
-
* @returns {
|
|
810
|
+
* @param {string|FileValue} v - The value to normalize.
|
|
811
|
+
* @returns {TranslationValue} The normalized translation value.
|
|
726
812
|
*/
|
|
727
813
|
#coerceFileValue(v) {
|
|
728
814
|
// Strings pass through; objects with $fn kept as-is; everything else ignored gracefully
|
|
@@ -752,13 +838,22 @@ class TinyI18 {
|
|
|
752
838
|
if (!options || typeof options !== 'object') {
|
|
753
839
|
throw new TypeError('TinyI18: options must be an object');
|
|
754
840
|
}
|
|
755
|
-
const {
|
|
841
|
+
const {
|
|
842
|
+
mode,
|
|
843
|
+
defaultLocale,
|
|
844
|
+
basePath,
|
|
845
|
+
localResources,
|
|
846
|
+
strict = true,
|
|
847
|
+
acceptNullResults = false,
|
|
848
|
+
} = options;
|
|
756
849
|
|
|
757
850
|
if (mode !== 'local' && mode !== 'file')
|
|
758
851
|
throw new TypeError('TinyI18: "mode" must be "local" or "file"');
|
|
759
852
|
if (typeof defaultLocale !== 'string' || !defaultLocale)
|
|
760
853
|
throw new TypeError('TinyI18: "defaultLocale" must be a non-empty string');
|
|
761
854
|
if (typeof strict !== 'boolean') throw new TypeError('TinyI18: "strict" must be a boolean');
|
|
855
|
+
if (typeof acceptNullResults !== 'boolean')
|
|
856
|
+
throw new TypeError('TinyI18: "acceptNullResults" must be a boolean');
|
|
762
857
|
|
|
763
858
|
if (mode === 'file') {
|
|
764
859
|
if (typeof basePath !== 'string' || !basePath)
|
|
@@ -769,6 +864,7 @@ class TinyI18 {
|
|
|
769
864
|
this.#mode = mode;
|
|
770
865
|
this.#defaultLocale = defaultLocale;
|
|
771
866
|
this.#strict = strict;
|
|
867
|
+
this.#acceptNullResults = acceptNullResults;
|
|
772
868
|
|
|
773
869
|
if (mode === 'local' && localResources && typeof localResources === 'object') {
|
|
774
870
|
for (const [loc, data] of Object.entries(localResources)) {
|
|
@@ -799,8 +895,10 @@ class TinyI18 {
|
|
|
799
895
|
|
|
800
896
|
/**
|
|
801
897
|
* Registers a helper function available to function-based entries and $fn references.
|
|
802
|
-
* @
|
|
803
|
-
* @
|
|
898
|
+
* @template {any} T
|
|
899
|
+
* @template {any} R
|
|
900
|
+
* @param {string} name - The unique name of the helper.
|
|
901
|
+
* @param {HelperCallback<T, R>} fn - The callback function to register.
|
|
804
902
|
*/
|
|
805
903
|
registerHelper(name, fn) {
|
|
806
904
|
checkDestroy(this.#destroyed);
|
|
@@ -821,14 +919,14 @@ class TinyI18 {
|
|
|
821
919
|
unregisterHelper(name) {
|
|
822
920
|
checkDestroy(this.#destroyed);
|
|
823
921
|
if (typeof name !== 'string' || !name)
|
|
824
|
-
throw new TypeError('unregisterHelper: "name" must be non-empty string');
|
|
922
|
+
throw new TypeError('unregisterHelper: "name" must be a non-empty string');
|
|
825
923
|
return this.#helpers.delete(name);
|
|
826
924
|
}
|
|
827
925
|
|
|
828
926
|
/**
|
|
829
927
|
* Loads or updates a locale data in-memory (local mode only).
|
|
830
|
-
* @param {LocaleCode} locale
|
|
831
|
-
* @param {Dict} data
|
|
928
|
+
* @param {LocaleCode} locale - The locale to load.
|
|
929
|
+
* @param {Dict} data - The dictionary data for the locale.
|
|
832
930
|
*/
|
|
833
931
|
loadLocaleLocal(locale, data) {
|
|
834
932
|
checkDestroy(this.#destroyed);
|
|
@@ -840,7 +938,8 @@ class TinyI18 {
|
|
|
840
938
|
/**
|
|
841
939
|
* Sets the current selected locale. In file mode, loads it from disk.
|
|
842
940
|
* Keeps only the default and the selected locale in memory (unloads previous selected).
|
|
843
|
-
* @param {LocaleCode|null} locale - null
|
|
941
|
+
* @param {LocaleCode|null} locale - The locale to set, or null to use only the default.
|
|
942
|
+
* @returns {Promise<void>} A promise that resolves when the locale has been set and loaded.
|
|
844
943
|
*/
|
|
845
944
|
async setLocale(locale) {
|
|
846
945
|
checkDestroy(this.#destroyed);
|
|
@@ -875,7 +974,7 @@ class TinyI18 {
|
|
|
875
974
|
* @param {string} key - Translation key (dot.notation).
|
|
876
975
|
* @param {Dict} [params] - Parameters for string interpolation or helper functions.
|
|
877
976
|
* @param {ResolveOptions} [options] - Override resolution options (e.g., force locale).
|
|
878
|
-
* @returns {
|
|
977
|
+
* @returns {TranslateResult} - Usually string, but may be HTMLElement, DocumentFragment, or any return type from a helper.
|
|
879
978
|
*/
|
|
880
979
|
t(key, params = undefined, options = undefined) {
|
|
881
980
|
return this.get(key, params, options);
|
|
@@ -883,10 +982,10 @@ class TinyI18 {
|
|
|
883
982
|
|
|
884
983
|
/**
|
|
885
984
|
* Alias of t()
|
|
886
|
-
* @param {string} key
|
|
887
|
-
* @param {Dict} [params]
|
|
888
|
-
* @param {ResolveOptions} [options]
|
|
889
|
-
* @returns {any
|
|
985
|
+
* @param {string} key - Translation key (dot.notation).
|
|
986
|
+
* @param {Dict} [params] - Parameters for string interpolation or helper functions.
|
|
987
|
+
* @param {ResolveOptions} [options] - Override resolution options (e.g., force locale).
|
|
988
|
+
* @returns {TranslateResult} - Usually string, but may be HTMLElement, DocumentFragment, or any return type from a helper.
|
|
890
989
|
*/
|
|
891
990
|
get(key, params = undefined, options = undefined) {
|
|
892
991
|
checkDestroy(this.#destroyed);
|
|
@@ -899,6 +998,7 @@ class TinyI18 {
|
|
|
899
998
|
let resolved = this.#resolveExact(order, key);
|
|
900
999
|
if (resolved === undefined) {
|
|
901
1000
|
if (this.#strict) throw new Error(`TinyI18: missing translation for key "${key}"`);
|
|
1001
|
+
if (this.#acceptNullResults) return null;
|
|
902
1002
|
return key; // graceful fallback to key
|
|
903
1003
|
}
|
|
904
1004
|
|
|
@@ -912,7 +1012,7 @@ class TinyI18 {
|
|
|
912
1012
|
*
|
|
913
1013
|
* @param {string} key - Input string to test against regex patterns.
|
|
914
1014
|
* @param {ResolveOptions} [options] - Override resolution options (e.g., force locale).
|
|
915
|
-
* @returns {
|
|
1015
|
+
* @returns {TranslateResult} - Translation value (string or custom return type).
|
|
916
1016
|
*/
|
|
917
1017
|
p(key, options) {
|
|
918
1018
|
return this.resolveByPattern(key, options);
|
|
@@ -920,9 +1020,9 @@ class TinyI18 {
|
|
|
920
1020
|
|
|
921
1021
|
/**
|
|
922
1022
|
* Alias of p()
|
|
923
|
-
* @param {string} key
|
|
924
|
-
* @param {ResolveOptions} [options]
|
|
925
|
-
* @returns {
|
|
1023
|
+
* @param {string} key - Input string to test against regex patterns.
|
|
1024
|
+
* @param {ResolveOptions} [options] - Override resolution options (e.g., force locale).
|
|
1025
|
+
* @returns {TranslateResult} - Translation value (string or custom return type).
|
|
926
1026
|
*/
|
|
927
1027
|
resolveByPattern(key, options) {
|
|
928
1028
|
checkDestroy(this.#destroyed);
|
|
@@ -933,6 +1033,7 @@ class TinyI18 {
|
|
|
933
1033
|
let resolved = this.#resolveByPattern(order, key);
|
|
934
1034
|
if (resolved === undefined) {
|
|
935
1035
|
if (this.#strict) throw new Error(`TinyI18: missing translation for key "${key}"`);
|
|
1036
|
+
if (this.#acceptNullResults) return null;
|
|
936
1037
|
return key; // graceful fallback to key
|
|
937
1038
|
}
|
|
938
1039
|
return resolved;
|
|
@@ -956,8 +1057,8 @@ class TinyI18 {
|
|
|
956
1057
|
|
|
957
1058
|
/**
|
|
958
1059
|
* Returns stats for a specific locale.
|
|
959
|
-
* @param {LocaleCode} locale
|
|
960
|
-
* @returns {StatLocale}
|
|
1060
|
+
* @param {LocaleCode} locale - The locale code to query.
|
|
1061
|
+
* @returns {StatLocale} An object containing the locale's current statistics.
|
|
961
1062
|
* @throws {Error} If the locale is not registered.
|
|
962
1063
|
*/
|
|
963
1064
|
getStatsForLocale(locale) {
|
|
@@ -984,7 +1085,7 @@ class TinyI18 {
|
|
|
984
1085
|
* to free up memory. Once destroyed, the instance cannot be reused.
|
|
985
1086
|
*
|
|
986
1087
|
* @throws {Error} If the instance has already been destroyed.
|
|
987
|
-
* @returns {void}
|
|
1088
|
+
* @returns {void} This method does not return a value.
|
|
988
1089
|
*/
|
|
989
1090
|
destroy() {
|
|
990
1091
|
if (this.#destroyed) return;
|