tiny-essentials 1.28.19 → 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.
Files changed (555) hide show
  1. package/README.md +1 -1
  2. package/changelog/1/28/19.md +24 -0
  3. package/changelog/1/29/0.md +58 -0
  4. package/dist/v1/ColorSafeStringify.min.js +1 -1
  5. package/dist/v1/TinyAdvancedRaffle.min.js +1 -1
  6. package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
  7. package/dist/v1/TinyAnalogClock.min.js +1 -1
  8. package/dist/v1/TinyArrayComparator.min.js +1 -1
  9. package/dist/v1/TinyArrayPaginator.min.js +1 -1
  10. package/dist/v1/TinyBasicsEs.min.js +1 -1
  11. package/dist/v1/TinyBrowserMonitor.min.js +1 -0
  12. package/dist/v1/TinyClassManager.min.js +1 -1
  13. package/dist/v1/TinyClipboard.min.js +1 -1
  14. package/dist/v1/TinyCloner.min.js +1 -0
  15. package/dist/v1/TinyColorConverter.min.js +1 -1
  16. package/dist/v1/TinyColorValidator.min.js +1 -1
  17. package/dist/v1/TinyCookieConsent.min.js +1 -1
  18. package/dist/v1/TinyDayNightCycle.min.js +1 -1
  19. package/dist/v1/TinyDebugger.min.js +1 -1
  20. package/dist/v1/TinyDomReadyManager.min.js +1 -1
  21. package/dist/v1/TinyDragDropDetector.min.js +1 -1
  22. package/dist/v1/TinyDragger.min.js +1 -1
  23. package/dist/v1/TinyElementObserver.min.js +1 -1
  24. package/dist/v1/TinyEssentials.min.js +1 -1
  25. package/dist/v1/TinyGamepad.min.js +1 -1
  26. package/dist/v1/TinyHtml.min.js +1 -1
  27. package/dist/v1/TinyHtmlTagRegexBuilder.min.js +1 -0
  28. package/dist/v1/TinyHttpResponseRegistry.min.js +1 -0
  29. package/dist/v1/TinyI18.min.js +1 -1
  30. package/dist/v1/TinyIframeEvents.min.js +1 -1
  31. package/dist/v1/TinyInventory.min.js +1 -1
  32. package/dist/v1/TinyInventoryTrader.min.js +1 -1
  33. package/dist/v1/TinyLevelUp.min.js +1 -1
  34. package/dist/v1/TinyLoadingScreen.min.js +1 -1
  35. package/dist/v1/TinyLocalStorage.min.js +1 -1
  36. package/dist/v1/TinyMaInSys.min.js +1 -1
  37. package/dist/v1/TinyMapCache.min.js +1 -0
  38. package/dist/v1/TinyMediaPlayer.min.js +1 -1
  39. package/dist/v1/TinyNeedBar.min.js +1 -1
  40. package/dist/v1/TinyNewWinEvents.min.js +1 -1
  41. package/dist/v1/TinyNotificationAdapter.min.js +1 -0
  42. package/dist/v1/TinyNotifications.min.js +1 -1
  43. package/dist/v1/TinyNotifyCenter.min.js +1 -1
  44. package/dist/v1/TinyOPFSFileSystem.min.js +1 -0
  45. package/dist/v1/TinyPasswordValidator.min.js +1 -0
  46. package/dist/v1/TinyPluginPackage.min.js +1 -0
  47. package/dist/v1/TinyPromiseQueue.min.js +1 -1
  48. package/dist/v1/TinyPushManager.min.js +1 -0
  49. package/dist/v1/TinyPushPayload.min.js +1 -0
  50. package/dist/v1/TinyPushRouter.min.js +1 -0
  51. package/dist/v1/TinyRadioFm.min.js +1 -1
  52. package/dist/v1/TinyRateLimiter.min.js +1 -1
  53. package/dist/v1/TinyRegexEs.min.js +1 -0
  54. package/dist/v1/TinyRouter.min.js +1 -0
  55. package/dist/v1/TinyServiceWorker.min.js +1 -0
  56. package/dist/v1/TinyServiceWorkerEngine.min.js +1 -0
  57. package/dist/v1/TinySetMapPackage.min.js +1 -0
  58. package/dist/v1/TinySimpleDice.min.js +1 -1
  59. package/dist/v1/TinySmartScroller.min.js +1 -1
  60. package/dist/v1/TinyStorageBucketFileSystem.min.js +1 -0
  61. package/dist/v1/TinyTextDiffer.min.js +1 -1
  62. package/dist/v1/TinyTextRangeEditor.min.js +1 -1
  63. package/dist/v1/TinyTextarea.min.js +1 -1
  64. package/dist/v1/TinyThrottledApi.min.js +1 -0
  65. package/dist/v1/TinyTimeout.min.js +1 -1
  66. package/dist/v1/TinyToastNotify.min.js +1 -1
  67. package/dist/v1/TinyUploadClicker.min.js +1 -1
  68. package/dist/v1/TinyUriParser.min.js +1 -0
  69. package/dist/v1/TinyVersion.min.js +1 -0
  70. package/dist/v1/TinyWebWorker.min.js +1 -0
  71. package/dist/v1/TinyWebWorkerEngine.min.js +1 -0
  72. package/dist/v1/UltraRandomMsgGen.min.js +1 -1
  73. package/dist/v1/basics/array.cjs +2 -2
  74. package/dist/v1/basics/array.d.mts +2 -0
  75. package/dist/v1/basics/array.d.mts.map +1 -1
  76. package/dist/v1/basics/array.mjs +2 -1
  77. package/dist/v1/basics/browserDetector.cjs +37 -12
  78. package/dist/v1/basics/browserDetector.d.mts +8 -0
  79. package/dist/v1/basics/browserDetector.d.mts.map +1 -1
  80. package/dist/v1/basics/browserDetector.mjs +32 -13
  81. package/dist/v1/basics/crypto.cjs +23 -0
  82. package/dist/v1/basics/crypto.d.mts +10 -0
  83. package/dist/v1/basics/crypto.d.mts.map +1 -0
  84. package/dist/v1/basics/crypto.mjs +18 -0
  85. package/dist/v1/basics/html.cjs +0 -3
  86. package/dist/v1/basics/html.d.mts.map +1 -1
  87. package/dist/v1/basics/html.mjs +0 -2
  88. package/dist/v1/basics/index.cjs +8 -1
  89. package/dist/v1/basics/index.d.mts +6 -5
  90. package/dist/v1/basics/index.d.mts.map +1 -1
  91. package/dist/v1/basics/index.mjs +6 -5
  92. package/dist/v1/basics/objChecker.cjs +88 -0
  93. package/dist/v1/basics/objChecker.d.mts +26 -0
  94. package/dist/v1/basics/objChecker.d.mts.map +1 -1
  95. package/dist/v1/basics/objChecker.mjs +74 -0
  96. package/dist/v1/basics/objFilter.cjs +234 -93
  97. package/dist/v1/basics/objFilter.d.mts +96 -22
  98. package/dist/v1/basics/objFilter.d.mts.map +1 -1
  99. package/dist/v1/basics/objFilter.mjs +216 -92
  100. package/dist/v1/basics/promiseUtils.cjs +48 -12
  101. package/dist/v1/basics/promiseUtils.d.mts +45 -12
  102. package/dist/v1/basics/promiseUtils.d.mts.map +1 -1
  103. package/dist/v1/basics/promiseUtils.mjs +47 -12
  104. package/dist/v1/basics/text.cjs +0 -12
  105. package/dist/v1/basics/text.d.mts +0 -10
  106. package/dist/v1/basics/text.d.mts.map +1 -1
  107. package/dist/v1/basics/text.mjs +0 -10
  108. package/dist/v1/index.cjs +88 -3
  109. package/dist/v1/index.d.mts +31 -6
  110. package/dist/v1/index.d.mts.map +1 -1
  111. package/dist/v1/index.mjs +32 -7
  112. package/dist/v1/jsdoc/EventEmitter.cjs +4 -0
  113. package/dist/v1/jsdoc/EventEmitter.d.mts +33 -0
  114. package/dist/v1/jsdoc/EventEmitter.d.mts.map +1 -0
  115. package/dist/v1/jsdoc/EventEmitter.mjs +18 -0
  116. package/dist/v1/libs/array/TinyArrayComparator.cjs +240 -25
  117. package/dist/v1/libs/array/TinyArrayComparator.d.mts +130 -22
  118. package/dist/v1/libs/array/TinyArrayComparator.d.mts.map +1 -1
  119. package/dist/v1/libs/array/TinyArrayComparator.mjs +210 -24
  120. package/dist/v1/libs/fs/constants.cjs +74 -0
  121. package/dist/v1/libs/fs/constants.d.mts +22 -0
  122. package/dist/v1/libs/fs/constants.d.mts.map +1 -0
  123. package/dist/v1/libs/fs/constants.mjs +53 -0
  124. package/dist/v1/libs/fs/encoding.cjs +118 -0
  125. package/dist/v1/libs/fs/encoding.d.mts +50 -0
  126. package/dist/v1/libs/fs/encoding.d.mts.map +1 -0
  127. package/dist/v1/libs/fs/encoding.mjs +102 -0
  128. package/dist/v1/libs/fs/error.cjs +188 -0
  129. package/dist/v1/libs/fs/error.d.mts +105 -0
  130. package/dist/v1/libs/fs/error.d.mts.map +1 -0
  131. package/dist/v1/libs/fs/error.mjs +158 -0
  132. package/dist/v1/libs/fs/handle.cjs +121 -0
  133. package/dist/v1/libs/fs/handle.d.mts +56 -0
  134. package/dist/v1/libs/fs/handle.d.mts.map +1 -0
  135. package/dist/v1/libs/fs/handle.mjs +100 -0
  136. package/dist/v1/libs/fs/index.cjs +700 -0
  137. package/dist/v1/libs/fs/index.d.mts +377 -0
  138. package/dist/v1/libs/fs/index.d.mts.map +1 -0
  139. package/dist/v1/libs/fs/index.mjs +630 -0
  140. package/dist/v1/libs/fs/path.cjs +234 -0
  141. package/dist/v1/libs/fs/path.d.mts +176 -0
  142. package/dist/v1/libs/fs/path.d.mts.map +1 -0
  143. package/dist/v1/libs/fs/path.mjs +197 -0
  144. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.cjs +202 -0
  145. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts +121 -0
  146. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts.map +1 -0
  147. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.mjs +172 -0
  148. package/dist/v1/libs/fs/plugins/OPFS/index.cjs +334 -0
  149. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts +98 -0
  150. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts.map +1 -0
  151. package/dist/v1/libs/fs/plugins/OPFS/index.mjs +300 -0
  152. package/dist/v1/libs/fs/stats.cjs +245 -0
  153. package/dist/v1/libs/fs/stats.d.mts +226 -0
  154. package/dist/v1/libs/fs/stats.d.mts.map +1 -0
  155. package/dist/v1/libs/fs/stats.mjs +197 -0
  156. package/dist/v1/libs/html/events/TinyIframeEvents.cjs +10 -1
  157. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts +9 -2
  158. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts.map +1 -1
  159. package/dist/v1/libs/html/events/TinyIframeEvents.mjs +8 -1
  160. package/dist/v1/libs/html/events/TinyNewWinEvents.cjs +14 -3
  161. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts +21 -5
  162. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts.map +1 -1
  163. package/dist/v1/libs/html/events/TinyNewWinEvents.mjs +12 -3
  164. package/dist/v1/libs/html/scroll/TinySmartScroller.cjs +13 -1
  165. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts +29 -2
  166. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts.map +1 -1
  167. package/dist/v1/libs/html/scroll/TinySmartScroller.mjs +11 -1
  168. package/dist/v1/libs/math/TinyAdvancedRaffle.cjs +13 -1
  169. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts +32 -2
  170. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts.map +1 -1
  171. package/dist/v1/libs/math/TinyAdvancedRaffle.mjs +11 -1
  172. package/dist/v1/libs/math/TinyTimeout.cjs +0 -14
  173. package/dist/v1/libs/math/TinyTimeout.d.mts +0 -11
  174. package/dist/v1/libs/math/TinyTimeout.d.mts.map +1 -1
  175. package/dist/v1/libs/math/TinyTimeout.mjs +0 -13
  176. package/dist/v1/libs/media/TinyMediaPlayer/index.cjs +25 -1
  177. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts +35 -2
  178. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts.map +1 -1
  179. package/dist/v1/libs/media/TinyMediaPlayer/index.mjs +23 -1
  180. package/dist/v1/libs/media/TinyMediaPlayer.cjs +2 -2
  181. package/dist/v1/libs/media/TinyMediaPlayer.d.mts +2 -2
  182. package/dist/v1/libs/media/TinyMediaPlayer.d.mts.map +1 -1
  183. package/dist/v1/libs/media/TinyMediaPlayer.mjs +2 -2
  184. package/dist/v1/libs/media/TinyRadioFm.cjs +19 -1
  185. package/dist/v1/libs/media/TinyRadioFm.d.mts +78 -2
  186. package/dist/v1/libs/media/TinyRadioFm.d.mts.map +1 -1
  187. package/dist/v1/libs/media/TinyRadioFm.mjs +17 -1
  188. package/dist/v1/libs/plugin/TinyPlugin.cjs +1630 -0
  189. package/dist/v1/libs/plugin/TinyPlugin.d.mts +753 -0
  190. package/dist/v1/libs/plugin/TinyPlugin.d.mts.map +1 -0
  191. package/dist/v1/libs/plugin/TinyPlugin.mjs +1376 -0
  192. package/dist/v1/libs/plugin/TinyVersion.cjs +204 -0
  193. package/dist/v1/libs/plugin/TinyVersion.d.mts +70 -0
  194. package/dist/v1/libs/plugin/TinyVersion.d.mts.map +1 -0
  195. package/dist/v1/libs/plugin/TinyVersion.mjs +179 -0
  196. package/dist/v1/libs/router/TinyRouter.cjs +661 -0
  197. package/dist/v1/libs/router/TinyRouter.d.mts +320 -0
  198. package/dist/v1/libs/router/TinyRouter.d.mts.map +1 -0
  199. package/dist/v1/libs/router/TinyRouter.mjs +572 -0
  200. package/dist/v1/libs/storage/TinyLocalStorage.cjs +20 -1
  201. package/dist/v1/libs/storage/TinyLocalStorage.d.mts +64 -2
  202. package/dist/v1/libs/storage/TinyLocalStorage.d.mts.map +1 -1
  203. package/dist/v1/libs/storage/TinyLocalStorage.mjs +18 -1
  204. package/dist/v1/libs/storage/TinyMapCache.cjs +373 -0
  205. package/dist/v1/libs/storage/TinyMapCache.d.mts +274 -0
  206. package/dist/v1/libs/storage/TinyMapCache.d.mts.map +1 -0
  207. package/dist/v1/libs/storage/TinyMapCache.mjs +333 -0
  208. package/dist/v1/libs/storage/TinySetMapDatabase.cjs +1167 -0
  209. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts +603 -0
  210. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts.map +1 -0
  211. package/dist/v1/libs/storage/TinySetMapDatabase.mjs +1059 -0
  212. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.cjs +126 -0
  213. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts +132 -0
  214. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts.map +1 -0
  215. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.mjs +109 -0
  216. package/dist/v1/libs/sw/browser/TinyPushManager.cjs +310 -0
  217. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts +168 -0
  218. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts.map +1 -0
  219. package/dist/v1/libs/sw/browser/TinyPushManager.mjs +264 -0
  220. package/dist/v1/libs/sw/browser/TinyServiceWorker.cjs +1060 -0
  221. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts +348 -0
  222. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts.map +1 -0
  223. package/dist/v1/libs/sw/browser/TinyServiceWorker.mjs +933 -0
  224. package/dist/v1/libs/sw/browser/plugins/TabManager.cjs +315 -0
  225. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts +178 -0
  226. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts.map +1 -0
  227. package/dist/v1/libs/sw/browser/plugins/TabManager.mjs +274 -0
  228. package/dist/v1/libs/sw/browser/utils.cjs +28 -0
  229. package/dist/v1/libs/sw/browser/utils.d.mts +8 -0
  230. package/dist/v1/libs/sw/browser/utils.d.mts.map +1 -0
  231. package/dist/v1/libs/sw/browser/utils.mjs +21 -0
  232. package/dist/v1/libs/sw/service/TinyPushRouter.cjs +222 -0
  233. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts +138 -0
  234. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts.map +1 -0
  235. package/dist/v1/libs/sw/service/TinyPushRouter.mjs +201 -0
  236. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.cjs +3016 -0
  237. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts +993 -0
  238. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts.map +1 -0
  239. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.mjs +2558 -0
  240. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.cjs +88 -0
  241. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts +32 -0
  242. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts.map +1 -0
  243. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.mjs +69 -0
  244. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.cjs +112 -0
  245. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts +31 -0
  246. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts.map +1 -0
  247. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.mjs +91 -0
  248. package/dist/v1/libs/sw/service/plugins/Ping.cjs +32 -0
  249. package/dist/v1/libs/sw/service/plugins/Ping.d.mts +9 -0
  250. package/dist/v1/libs/sw/service/plugins/Ping.d.mts.map +1 -0
  251. package/dist/v1/libs/sw/service/plugins/Ping.mjs +25 -0
  252. package/dist/v1/libs/sw/service/plugins/TabManager.cjs +457 -0
  253. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts +91 -0
  254. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts.map +1 -0
  255. package/dist/v1/libs/sw/service/plugins/TabManager.mjs +372 -0
  256. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.cjs +180 -0
  257. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts +28 -0
  258. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts.map +1 -0
  259. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.mjs +148 -0
  260. package/dist/v1/libs/sw/service/shared/TinyPushPayload.cjs +199 -0
  261. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts +80 -0
  262. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts.map +1 -0
  263. package/dist/v1/libs/sw/service/shared/TinyPushPayload.mjs +174 -0
  264. package/dist/v1/libs/sw/utils.cjs +57 -0
  265. package/dist/v1/libs/sw/utils.d.mts +173 -0
  266. package/dist/v1/libs/sw/utils.d.mts.map +1 -0
  267. package/dist/v1/libs/sw/utils.mjs +50 -0
  268. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.cjs +57 -0
  269. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts +39 -0
  270. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts.map +1 -0
  271. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.mjs +48 -0
  272. package/dist/v1/libs/text/TinyI18/Browser.cjs +64 -0
  273. package/dist/v1/libs/text/TinyI18/Browser.d.mts +47 -0
  274. package/dist/v1/libs/text/TinyI18/Browser.d.mts.map +1 -0
  275. package/dist/v1/libs/text/TinyI18/Browser.mjs +57 -0
  276. package/dist/v1/libs/text/TinyI18/Node.cjs +49 -0
  277. package/dist/v1/libs/text/TinyI18/Node.d.mts +38 -0
  278. package/dist/v1/libs/text/TinyI18/Node.d.mts.map +1 -0
  279. package/dist/v1/libs/text/TinyI18/Node.mjs +43 -0
  280. package/dist/v1/libs/text/TinyI18/browser-utils.cjs +17 -0
  281. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts +8 -0
  282. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts.map +1 -0
  283. package/dist/v1/libs/text/TinyI18/browser-utils.mjs +13 -0
  284. package/dist/v1/libs/text/{TinyI18.cjs → TinyI18/index.cjs} +205 -104
  285. package/dist/v1/libs/text/{TinyI18.d.mts → TinyI18/index.d.mts} +141 -92
  286. package/dist/v1/libs/text/TinyI18/index.d.mts.map +1 -0
  287. package/dist/v1/libs/text/{TinyI18.mjs → TinyI18/index.mjs} +195 -101
  288. package/dist/v1/libs/tools/TinyBrowserMonitor.cjs +1088 -0
  289. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts +621 -0
  290. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts.map +1 -0
  291. package/dist/v1/libs/tools/TinyBrowserMonitor.mjs +940 -0
  292. package/dist/v1/libs/tools/TinyDebugger.cjs +180 -19
  293. package/dist/v1/libs/tools/TinyDebugger.d.mts +220 -24
  294. package/dist/v1/libs/tools/TinyDebugger.d.mts.map +1 -1
  295. package/dist/v1/libs/tools/TinyDebugger.mjs +161 -19
  296. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.cjs +256 -0
  297. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts +125 -0
  298. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts.map +1 -0
  299. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.mjs +223 -0
  300. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.cjs +23 -0
  301. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts +17 -0
  302. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts.map +1 -0
  303. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.mjs +19 -0
  304. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.cjs +23 -0
  305. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts +17 -0
  306. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts.map +1 -0
  307. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.mjs +19 -0
  308. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.cjs +390 -0
  309. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts +9 -0
  310. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts.map +1 -0
  311. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.mjs +387 -0
  312. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.cjs +2 -0
  313. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts +27 -0
  314. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts.map +1 -0
  315. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.mjs +12 -0
  316. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/LICENSE +53 -0
  317. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.cjs +405 -0
  318. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts +34 -0
  319. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts.map +1 -0
  320. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.mjs +342 -0
  321. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.cjs +23 -0
  322. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts +17 -0
  323. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts.map +1 -0
  324. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.mjs +19 -0
  325. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.cjs +327 -0
  326. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts +9 -0
  327. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts.map +1 -0
  328. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.mjs +324 -0
  329. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.cjs +268 -0
  330. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts +107 -0
  331. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts.map +1 -0
  332. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.mjs +238 -0
  333. package/dist/v1/libs/tools/TinyPasswordValidator.cjs +491 -0
  334. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts +246 -0
  335. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts.map +1 -0
  336. package/dist/v1/libs/tools/TinyPasswordValidator.mjs +434 -0
  337. package/dist/v1/libs/tools/TinyPkgExportValidator.cjs +48 -0
  338. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts +14 -0
  339. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts.map +1 -1
  340. package/dist/v1/libs/tools/TinyPkgExportValidator.mjs +44 -0
  341. package/dist/v1/libs/tools/TinySiteMap.cjs +1029 -0
  342. package/dist/v1/libs/tools/TinySiteMap.d.mts +429 -0
  343. package/dist/v1/libs/tools/TinySiteMap.d.mts.map +1 -0
  344. package/dist/v1/libs/tools/TinySiteMap.mjs +910 -0
  345. package/dist/v1/libs/tools/TinySiteMapStream.cjs +121 -0
  346. package/dist/v1/libs/tools/TinySiteMapStream.d.mts +51 -0
  347. package/dist/v1/libs/tools/TinySiteMapStream.d.mts.map +1 -0
  348. package/dist/v1/libs/tools/TinySiteMapStream.mjs +85 -0
  349. package/dist/v1/libs/tools/TinyURLSecurityVerifier.cjs +444 -0
  350. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts +217 -0
  351. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts.map +1 -0
  352. package/dist/v1/libs/tools/TinyURLSecurityVerifier.mjs +394 -0
  353. package/dist/v1/libs/tools/TinyUriParser/BlueSky.cjs +613 -0
  354. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts +152 -0
  355. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts.map +1 -0
  356. package/dist/v1/libs/tools/TinyUriParser/BlueSky.mjs +527 -0
  357. package/dist/v1/libs/tools/TinyUriParser/Discord.cjs +1119 -0
  358. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts +306 -0
  359. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts.map +1 -0
  360. package/dist/v1/libs/tools/TinyUriParser/Discord.mjs +968 -0
  361. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.cjs +469 -0
  362. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts +80 -0
  363. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts.map +1 -0
  364. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.mjs +379 -0
  365. package/dist/v1/libs/tools/TinyUriParser.cjs +217 -0
  366. package/dist/v1/libs/tools/TinyUriParser.d.mts +109 -0
  367. package/dist/v1/libs/tools/TinyUriParser.d.mts.map +1 -0
  368. package/dist/v1/libs/tools/TinyUriParser.mjs +183 -0
  369. package/dist/v1/libs/utils/TinyCloner.cjs +466 -0
  370. package/dist/v1/libs/utils/TinyCloner.d.mts +221 -0
  371. package/dist/v1/libs/utils/TinyCloner.d.mts.map +1 -0
  372. package/dist/v1/libs/utils/TinyCloner.mjs +416 -0
  373. package/dist/v1/libs/utils/TinyPromiseQueue.cjs +1 -1
  374. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts +2 -2
  375. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts.map +1 -1
  376. package/dist/v1/libs/utils/TinyPromiseQueue.mjs +1 -1
  377. package/dist/v1/libs/utils/TinyThrottledApi.cjs +333 -0
  378. package/dist/v1/libs/utils/TinyThrottledApi.d.mts +163 -0
  379. package/dist/v1/libs/utils/TinyThrottledApi.d.mts.map +1 -0
  380. package/dist/v1/libs/utils/TinyThrottledApi.mjs +294 -0
  381. package/dist/v1/libs/worker/browser/TinyWebWorker.cjs +342 -0
  382. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts +97 -0
  383. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts.map +1 -0
  384. package/dist/v1/libs/worker/browser/TinyWebWorker.mjs +305 -0
  385. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.cjs +346 -0
  386. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts +127 -0
  387. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts.map +1 -0
  388. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.mjs +304 -0
  389. package/dist/v1/regexp/Email.cjs +185 -0
  390. package/dist/v1/regexp/Email.d.mts +73 -0
  391. package/dist/v1/regexp/Email.d.mts.map +1 -0
  392. package/dist/v1/regexp/Email.mjs +153 -0
  393. package/dist/v1/regexp/Glob.cjs +293 -0
  394. package/dist/v1/regexp/Glob.d.mts +45 -0
  395. package/dist/v1/regexp/Glob.d.mts.map +1 -0
  396. package/dist/v1/regexp/Glob.mjs +260 -0
  397. package/dist/v1/regexp/Ipv4.cjs +57 -0
  398. package/dist/v1/regexp/Ipv4.d.mts +29 -0
  399. package/dist/v1/regexp/Ipv4.d.mts.map +1 -0
  400. package/dist/v1/regexp/Ipv4.mjs +45 -0
  401. package/dist/v1/regexp/Ipv6.cjs +67 -0
  402. package/dist/v1/regexp/Ipv6.d.mts +29 -0
  403. package/dist/v1/regexp/Ipv6.d.mts.map +1 -0
  404. package/dist/v1/regexp/Ipv6.mjs +54 -0
  405. package/dist/v1/regexp/SegmentExtractor.cjs +145 -0
  406. package/dist/v1/regexp/SegmentExtractor.d.mts +91 -0
  407. package/dist/v1/regexp/SegmentExtractor.d.mts.map +1 -0
  408. package/dist/v1/regexp/SegmentExtractor.mjs +116 -0
  409. package/dist/v1/regexp/UrlDetector.cjs +125 -0
  410. package/dist/v1/regexp/UrlDetector.d.mts +67 -0
  411. package/dist/v1/regexp/UrlDetector.d.mts.map +1 -0
  412. package/dist/v1/regexp/UrlDetector.mjs +102 -0
  413. package/dist/v1/regexp/Username/index.cjs +233 -0
  414. package/dist/v1/regexp/Username/index.d.mts +77 -0
  415. package/dist/v1/regexp/Username/index.d.mts.map +1 -0
  416. package/dist/v1/regexp/Username/index.mjs +199 -0
  417. package/dist/v1/regexp/Username/jsDoc.cjs +2 -0
  418. package/dist/v1/regexp/Username/jsDoc.d.mts +57 -0
  419. package/dist/v1/regexp/Username/jsDoc.d.mts.map +1 -0
  420. package/dist/v1/regexp/Username/jsDoc.mjs +18 -0
  421. package/dist/v1/regexp/Username/templates/BlueSky.cjs +56 -0
  422. package/dist/v1/regexp/Username/templates/BlueSky.d.mts +35 -0
  423. package/dist/v1/regexp/Username/templates/BlueSky.d.mts.map +1 -0
  424. package/dist/v1/regexp/Username/templates/BlueSky.mjs +52 -0
  425. package/dist/v1/regexp/Username/templates/Discord.cjs +505 -0
  426. package/dist/v1/regexp/Username/templates/Discord.d.mts +209 -0
  427. package/dist/v1/regexp/Username/templates/Discord.d.mts.map +1 -0
  428. package/dist/v1/regexp/Username/templates/Discord.mjs +458 -0
  429. package/dist/v1/regexp/Username/templates/MatrixProtocol.cjs +143 -0
  430. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts +70 -0
  431. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts.map +1 -0
  432. package/dist/v1/regexp/Username/templates/MatrixProtocol.mjs +128 -0
  433. package/dist/v1/regexp/Username/templates/deprecated/Discord.cjs +24 -0
  434. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts +17 -0
  435. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts.map +1 -0
  436. package/dist/v1/regexp/Username/templates/deprecated/Discord.mjs +20 -0
  437. package/dist/v1/regexp/Username/templates/index.cjs +11 -0
  438. package/dist/v1/regexp/Username/templates/index.d.mts +5 -0
  439. package/dist/v1/regexp/Username/templates/index.d.mts.map +1 -0
  440. package/dist/v1/regexp/Username/templates/index.mjs +4 -0
  441. package/dist/v1/regexp/index.cjs +41 -0
  442. package/dist/v1/regexp/index.d.mts +9 -0
  443. package/dist/v1/regexp/index.d.mts.map +1 -0
  444. package/dist/v1/regexp/index.mjs +8 -0
  445. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.cjs +64 -0
  446. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts +11 -0
  447. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts.map +1 -0
  448. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.mjs +51 -0
  449. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.cjs +66 -0
  450. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts +11 -0
  451. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts.map +1 -0
  452. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.mjs +51 -0
  453. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.cjs +39 -0
  454. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts +11 -0
  455. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts.map +1 -0
  456. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.mjs +28 -0
  457. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.cjs +494 -0
  458. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts +142 -0
  459. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts.map +1 -0
  460. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.mjs +445 -0
  461. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.cjs +30 -4
  462. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts +5 -2
  463. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts.map +1 -1
  464. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs +29 -5
  465. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.cjs +135 -0
  466. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts +83 -0
  467. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts.map +1 -0
  468. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.mjs +120 -0
  469. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.cjs +127 -0
  470. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts +95 -0
  471. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts.map +1 -0
  472. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.mjs +109 -0
  473. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.cjs +83 -0
  474. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts +46 -0
  475. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts.map +1 -0
  476. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.mjs +71 -0
  477. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.cjs +493 -0
  478. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts +67 -0
  479. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts.map +1 -0
  480. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.mjs +399 -0
  481. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.cjs +35 -0
  482. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts +6 -0
  483. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts.map +1 -0
  484. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.mjs +29 -0
  485. package/docs/info/RegExp.md +74 -0
  486. package/docs/v1/Exports.md +101 -0
  487. package/docs/v1/README.md +113 -15
  488. package/docs/v1/basics/asyncReplace.md +2 -0
  489. package/docs/v1/basics/browserDetector.md +28 -11
  490. package/docs/v1/basics/crypto.md +85 -0
  491. package/docs/v1/basics/deprecated/html.md +2 -0
  492. package/docs/v1/basics/deprecated/objFilter.md +2 -0
  493. package/docs/v1/basics/html.md +2 -0
  494. package/docs/v1/basics/objChecker.md +55 -0
  495. package/docs/v1/basics/objFilter.md +57 -86
  496. package/docs/v1/basics/promiseUtils.md +12 -3
  497. package/docs/v1/basics/text.md +0 -1
  498. package/docs/v1/libs/array/TinyArrayComparator.md +50 -39
  499. package/docs/v1/libs/fs/TinyFS.md +752 -0
  500. package/docs/v1/libs/fs/TinyOPFSFileSystem.md +495 -0
  501. package/docs/v1/libs/fs/TinyStorageBucketFileSystem.md +407 -0
  502. package/docs/v1/libs/plugin/TinyPlugin.md +441 -0
  503. package/docs/v1/libs/plugin/TinyVersion.md +145 -0
  504. package/docs/v1/libs/router/TinyRouter.md +216 -0
  505. package/docs/v1/libs/storage/TinyMapCache.md +219 -0
  506. package/docs/v1/libs/storage/TinySetMapDatabase.md +478 -0
  507. package/docs/v1/libs/sw/browser/TinyNotificationAdapter.md +280 -0
  508. package/docs/v1/libs/sw/browser/TinyPushManager.md +782 -0
  509. package/docs/v1/libs/sw/browser/TinyServiceWorker.md +365 -0
  510. package/docs/v1/libs/sw/browser/plugins/TabManager.md +133 -0
  511. package/docs/v1/libs/sw/service/TinyPushRouter.md +314 -0
  512. package/docs/v1/libs/sw/service/TinyServiceWorkerEngine.md +748 -0
  513. package/docs/v1/libs/sw/service/plugins/GlobBypassPlugin.md +229 -0
  514. package/docs/v1/libs/sw/service/plugins/GlobCachePlugin.md +91 -0
  515. package/docs/v1/libs/sw/service/plugins/Ping.md +36 -0
  516. package/docs/v1/libs/sw/service/plugins/TabManager.md +64 -0
  517. package/docs/v1/libs/sw/service/plugins/ViteFileDetector.md +92 -0
  518. package/docs/v1/libs/sw/service/shared/TinyPushPayload.md +316 -0
  519. package/docs/v1/libs/text/TinyI18.md +80 -56
  520. package/docs/v1/libs/tools/TinyBrowserMonitor.md +170 -0
  521. package/docs/v1/libs/tools/TinyDebugger.md +117 -1
  522. package/docs/v1/libs/tools/TinyHtmlTagRegexBuilder.md +141 -0
  523. package/docs/v1/libs/tools/TinyHttpResponseRegistry.md +129 -0
  524. package/docs/v1/libs/tools/TinyPasswordValidator.md +153 -0
  525. package/docs/v1/libs/tools/TinyPkgExportValidator.md +45 -1
  526. package/docs/v1/libs/tools/TinySiteMap.md +134 -0
  527. package/docs/v1/libs/tools/TinySiteMapStream.md +97 -0
  528. package/docs/v1/libs/tools/TinyURLSecurityVerifier.md +146 -0
  529. package/docs/v1/libs/tools/TinyUriParser/Discord.md +374 -0
  530. package/docs/v1/libs/tools/TinyUriParser/MatrixProtocol.md +54 -0
  531. package/docs/v1/libs/tools/TinyUriParser.md +128 -0
  532. package/docs/v1/libs/utils/TinyCloner.md +126 -0
  533. package/docs/v1/libs/utils/TinyPromiseQueue.md +1 -1
  534. package/docs/v1/libs/utils/TinyThrottledApi.md +219 -0
  535. package/docs/v1/libs/worker/browser/TinyWebWorker.md +331 -0
  536. package/docs/v1/libs/worker/engine/TinyWebWorkerEngine.md +137 -0
  537. package/docs/v1/regexp/Email.md +127 -0
  538. package/docs/v1/regexp/Glob.md +155 -0
  539. package/docs/v1/regexp/IPv4.md +103 -0
  540. package/docs/v1/regexp/IPv6.md +122 -0
  541. package/docs/v1/regexp/SegmentExtractor.md +120 -0
  542. package/docs/v1/regexp/UrlDetector.md +117 -0
  543. package/docs/v1/regexp/Username/Base.md +131 -0
  544. package/docs/v1/regexp/Username/Discord.md +267 -0
  545. package/docs/v1/regexp/Username/MatrixProtocol.md +131 -0
  546. package/docs/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters.md +569 -0
  547. package/docs/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.md +19 -7
  548. package/docs/v1/webTemplates/media/MediaValidator/v1/Browser.md +123 -0
  549. package/docs/v1/webTemplates/media/MediaValidator/v1/Node.md +136 -0
  550. package/docs/v1/webTemplates/multiformats/14.0/IPFSHasher.md +310 -0
  551. package/docs/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.md +131 -0
  552. package/docs/v1/webTemplates/vite/7.3/plugins/githubUtils.md +50 -0
  553. package/package.json +303 -13
  554. package/types/EventEmitter.d.ts +48 -0
  555. package/dist/v1/libs/text/TinyI18.d.mts.map +0 -1
@@ -1,31 +1,78 @@
1
1
  /**
2
- * @fileoverview Array comparison utility.
2
+ * @fileoverview Array comparison utility with deep object diffing capabilities.
3
3
  * @module TinyArrayComparator
4
4
  */
5
5
  /**
6
- * @template {any} ArrayItem
6
+ * @template Item
7
+ * @typedef {Object} HashEntry
8
+ * @property {Item} item - The original item stored in the map.
9
+ * @property {string} hash - The calculated hash representing the item's value.
10
+ */
11
+ // STRUCTURAL TRANSFORMATION & TYPE DERIVATION:
12
+ // Here we remove 'any' and use 'Partial<Item>' and Mapped Types.
13
+ // VSCode/Intellisense will now know exactly which keys exist within 'added', 'deleted', and 'modified',
14
+ // deriving the types directly from the data structure you pass to the class.
15
+ /**
16
+ * @template Item
17
+ * @typedef {Object} ObjectDiff
18
+ * @property {Partial<Item>} added - Properties added in the new object.
19
+ * @property {Partial<Item>} deleted - Properties removed from the old object.
20
+ * @property {Partial<{ [K in keyof Item]: { oldValue: Item[K], newValue: Item[K] } }>} modified - Properties that changed value.
21
+ * @property {Partial<{ [K in keyof Item]: ObjectDiff<Item[K]> }>} nested - Nested differences for nested objects.
22
+ */
23
+ // ADVANCED PATTERN MATCHING:
24
+ // We use a discriminated union (status) so the IDE knows that 'oldItem' and 'details'
25
+ // only make sense (or are more relevant) in contexts where the change requires it.
26
+ /**
27
+ * @template Item
28
+ * @typedef {Object} DiffResult
29
+ * @property {Item} item - The item that was affected.
30
+ * @property {Item} [oldItem] - The original item before the change (only for 'edited' status).
31
+ * @property {'added'|'deleted'|'edited'} status - The nature of the change.
32
+ * @property {ObjectDiff<Item>} [details] - Detailed property changes (only if status is 'edited' and deepComparison is enabled).
33
+ */
34
+ /**
35
+ * @template Item
7
36
  * @typedef {Object} InternalState
8
37
  * Holds the internal tracking variables during the comparison process.
9
- * @property {Map<string, ArrayItem>} oldItemsMap - A map storing the hash as the key and the original item as the value.
10
- * @property {AffectedItems<ArrayItem>} affectedItems - The final array that collects added or deleted items.
38
+ * @property {Map<string|number, HashEntry<Item>>} oldItemsMap - A map storing the identity key as the key and the hash entry as the value.
39
+ * @property {Array<DiffResult<Item>>} affectedItems - The final array that collects added, deleted, or edited items.
11
40
  */
12
41
  /**
13
- * The final array that collects added or deleted items.
14
- * @template {any} ArrayItem
15
- * @typedef {Array<{item: ArrayItem, status: 'added'|'deleted'}>} AffectedItems
42
+ * The final array that collects added, deleted, or edited items.
43
+ * @template Item
44
+ * @typedef {Array<DiffResult<Item>>} AffectedItems
45
+ */
46
+ // ZERO-REDUNDANCY RULE:
47
+ // If 'Item' is a known object, 'idKey' will suggest the valid keys of that object (keyof Item).
48
+ // The '(string & {})' is an advanced trick to allow the user to type other strings if the base type is dynamic,
49
+ // without losing autocomplete for the known keys.
50
+ /**
51
+ * Options to configure the comparator.
52
+ * @template Item
53
+ * @typedef {Object} ComparatorOptions
54
+ * @property {keyof Item | (string & {})} [idKey='id'] - The property name used as a unique identifier for objects to detect edits.
55
+ * @property {boolean} [deepComparison=true] - If true, provides detailed property-level diffs for edited objects.
16
56
  */
17
57
  /**
18
- * Compares two arrays efficiently by hashing their items to detect additions and deletions.
58
+ * Compares two arrays efficiently by hashing their items to detect additions, deletions, and edits.
19
59
  * @template {any} ArrayItem
20
60
  */
21
61
  class TinyArrayComparator {
22
62
  /**
23
63
  * Generates a simple 32-bit integer hash converted to a base36 string.
24
- * @param {any} item - The item to be hashed (can be an object, array, string, or number).
64
+ * @param {any} item - The item to be hashed.
25
65
  * @returns {string} The unique hash representing the item's value.
66
+ * @throws {TypeError} Throws a TypeError if the item cannot be stringified due to circular references.
26
67
  */
27
68
  static generateHash(item) {
28
- const stringified = typeof item === 'object' ? JSON.stringify(item) : String(item);
69
+ let stringified;
70
+ try {
71
+ stringified = typeof item === 'object' && item !== null ? JSON.stringify(item) : String(item);
72
+ }
73
+ catch (error) {
74
+ throw new TypeError('Failed to stringify item for hashing. Ensure the object does not have circular references.');
75
+ }
29
76
  let hash = 0;
30
77
  for (let i = 0, len = stringified.length; i < len; i++) {
31
78
  const char = stringified.charCodeAt(i);
@@ -39,6 +86,49 @@ class TinyArrayComparator {
39
86
  * @type {ArrayItem[]}
40
87
  */
41
88
  #oldArray = [];
89
+ /**
90
+ * The key used to track identity of an object (e.g., 'id', 'uuid').
91
+ * @type {string|null}
92
+ */
93
+ #idKey = null;
94
+ /**
95
+ * Detects whether deep comparison is enabled.
96
+ * @type {boolean}
97
+ */
98
+ #deepComparison = true;
99
+ /**
100
+ * Gets the current identity key.
101
+ * @returns {string|null}
102
+ */
103
+ get idKey() {
104
+ return this.#idKey;
105
+ }
106
+ /**
107
+ * Sets the identity key used for object comparison.
108
+ * @param {string|null} value - The property name to use as an identifier.
109
+ * @throws {TypeError} Throws a TypeError if the value is not a string.
110
+ */
111
+ set idKey(value) {
112
+ if (value !== null && typeof value !== 'string')
113
+ throw new TypeError('The idKey must be a string or null.');
114
+ this.#idKey = value;
115
+ }
116
+ /**
117
+ * Gets whether deep comparison is enabled.
118
+ * @returns {boolean}
119
+ */
120
+ get deepComparison() {
121
+ return this.#deepComparison;
122
+ }
123
+ /**
124
+ * Sets whether deep comparison is enabled.
125
+ * @param {boolean} value - The configuration value.
126
+ */
127
+ set deepComparison(value) {
128
+ if (typeof value !== 'boolean')
129
+ throw new TypeError('The deepComparison option must be a boolean.');
130
+ this.#deepComparison = value;
131
+ }
42
132
  /**
43
133
  * Gets the current base array used for comparisons.
44
134
  * @returns {ArrayItem[]} The current initial state of the array.
@@ -57,16 +147,23 @@ class TinyArrayComparator {
57
147
  this.#oldArray = oldArray;
58
148
  }
59
149
  /**
60
- * Initializes the comparator with an optional base array.
150
+ * Initializes the comparator with an optional base array and options.
61
151
  * @param {ArrayItem[]} [oldArray] - The initial state of the array to be stored.
152
+ * @param {ComparatorOptions<ArrayItem>} [options={}] - Configuration options for the comparator.
62
153
  */
63
- constructor(oldArray) {
154
+ constructor(oldArray, options = {}) {
64
155
  if (typeof oldArray !== 'undefined')
65
156
  this.oldArray = oldArray;
157
+ if (typeof options.idKey === 'string') {
158
+ this.idKey = options.idKey;
159
+ }
160
+ if (typeof options.deepComparison === 'boolean') {
161
+ this.deepComparison = options.deepComparison;
162
+ }
66
163
  }
67
164
  /**
68
165
  * Proxy to generates a hash converted to a string.
69
- * @param {ArrayItem} item - The item to be hashed (can be an object, array, string, or number).
166
+ * @param {ArrayItem} item - The item to be hashed.
70
167
  * @returns {string} The unique hash representing the item's value.
71
168
  * @private
72
169
  */
@@ -74,7 +171,65 @@ class TinyArrayComparator {
74
171
  return TinyArrayComparator.generateHash(item);
75
172
  }
76
173
  /**
77
- * Compares the stored older array with a newer array and identifies missing or new items.
174
+ * Recursively compares two objects to find differences.
175
+ * @param {Object} oldObj - The original object.
176
+ * @param {Object} newObj - The modified object.
177
+ * @returns {ObjectDiff<ArrayItem>} A structured object containing the differences.
178
+ */
179
+ #getDeepDiff(oldObj, newObj) {
180
+ /** @type {ObjectDiff<ArrayItem>} */
181
+ const diff = {
182
+ added: {},
183
+ deleted: {},
184
+ modified: {},
185
+ nested: {},
186
+ };
187
+ const allKeys = new Set([...Object.keys(oldObj), ...Object.keys(newObj)]);
188
+ for (const key of allKeys) {
189
+ // @ts-ignore
190
+ const oldVal = oldObj[key];
191
+ // @ts-ignore
192
+ const newVal = newObj[key];
193
+ if (!(key in oldObj)) {
194
+ // Key exists in new object but not in old
195
+ // @ts-ignore
196
+ diff.added[key] = newVal;
197
+ }
198
+ else if (!(key in newObj)) {
199
+ // Key exists in old object but not in new
200
+ // @ts-ignore
201
+ diff.deleted[key] = oldVal;
202
+ }
203
+ else if (typeof oldVal === 'object' &&
204
+ oldVal !== null &&
205
+ typeof newVal === 'object' &&
206
+ newVal !== null &&
207
+ !Array.isArray(oldVal) &&
208
+ !Array.isArray(newObj)) {
209
+ // Both are objects, recurse
210
+ const nestedDiff = this.#getDeepDiff(oldVal, newVal);
211
+ // Only add nested if it actually contains differences
212
+ if (Object.keys(nestedDiff.added).length > 0 ||
213
+ Object.keys(nestedDiff.deleted).length > 0 ||
214
+ Object.keys(nestedDiff.modified).length > 0 ||
215
+ Object.keys(nestedDiff.nested).length > 0) {
216
+ // @ts-ignore
217
+ diff.nested[key] = nestedDiff;
218
+ }
219
+ }
220
+ else if (oldVal !== newVal) {
221
+ // Values are different and not objects (or one is an array)
222
+ // @ts-ignore
223
+ diff.modified[key] = {
224
+ oldValue: oldVal,
225
+ newValue: newVal,
226
+ };
227
+ }
228
+ }
229
+ return diff;
230
+ }
231
+ /**
232
+ * Compares the stored older array with a newer array and identifies added, deleted, or edited items.
78
233
  *
79
234
  * @param {ArrayItem[]} newArray - The modified state of the array.
80
235
  * @returns {AffectedItems<ArrayItem>} An array containing the affected items and their status.
@@ -90,24 +245,55 @@ class TinyArrayComparator {
90
245
  };
91
246
  // Step 1: Hash and store all items from the first array
92
247
  for (const item of this.#oldArray) {
93
- const hashKey = this._generateHash(item);
94
- state.oldItemsMap.set(hashKey, item);
248
+ const hash = this._generateHash(item);
249
+ // Identity is determined by the idKey. Otherwise, it relies purely on the hash.
250
+ const identityKey = this.#idKey !== null && item !== null && typeof item === 'object' && this.#idKey in item
251
+ ? // @ts-ignore
252
+ item[this.#idKey]
253
+ : hash;
254
+ state.oldItemsMap.set(identityKey, { item, hash });
95
255
  }
96
- // Step 2: Iterate through the second array to find matches or additions
256
+ // Step 2: Iterate through the second array to find matches, edits or additions
97
257
  for (const item of newArray) {
98
- const hashKey = this._generateHash(item);
99
- if (state.oldItemsMap.has(hashKey)) {
100
- // Item exists in both, so it is unchanged. Remove from map.
101
- state.oldItemsMap.delete(hashKey);
258
+ const hash = this._generateHash(item);
259
+ const identityKey = this.#idKey !== null && item !== null && typeof item === 'object' && this.#idKey in item
260
+ ? // @ts-ignore
261
+ item[this.#idKey]
262
+ : hash;
263
+ const oldData = state.oldItemsMap.get(identityKey);
264
+ if (oldData) {
265
+ if (oldData.hash === hash) {
266
+ // Item exists and the content is identical. Unchanged.
267
+ state.oldItemsMap.delete(identityKey);
268
+ }
269
+ else {
270
+ // Item has the same identity but a different hash. It was edited.
271
+ /** @type {DiffResult<ArrayItem>} */
272
+ const diffResult = {
273
+ item: item,
274
+ oldItem: oldData.item,
275
+ status: 'edited',
276
+ };
277
+ // Perform deep comparison if enabled and items are objects
278
+ if (this.#deepComparison &&
279
+ typeof item === 'object' &&
280
+ item !== null &&
281
+ typeof oldData.item === 'object' &&
282
+ oldData.item !== null) {
283
+ diffResult.details = this.#getDeepDiff(oldData.item, item);
284
+ }
285
+ state.affectedItems.push(diffResult);
286
+ state.oldItemsMap.delete(identityKey);
287
+ }
102
288
  }
103
289
  else {
104
- // Item was not in the old array, so it is an addition.
290
+ // Item identity was not found in the old array. It is an addition.
105
291
  state.affectedItems.push({ item, status: 'added' });
106
292
  }
107
293
  }
108
294
  // Step 3: Any item left in the oldItemsMap was not present in the new array (deleted)
109
- for (const item of state.oldItemsMap.values()) {
110
- state.affectedItems.push({ item, status: 'deleted' });
295
+ for (const oldData of state.oldItemsMap.values()) {
296
+ state.affectedItems.push({ item: oldData.item, status: 'deleted' });
111
297
  }
112
298
  return state.affectedItems;
113
299
  }
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @file Numeric constants shared by every {@link TinyFSCore} backend.
5
+ */
6
+
7
+ /** @type {Readonly<Record<string, number>>} */
8
+ const constants = Object.freeze({
9
+ F_OK: 0,
10
+ R_OK: 4,
11
+ W_OK: 2,
12
+ X_OK: 1,
13
+ COPYFILE_EXCL: 1,
14
+ COPYFILE_FICLONE: 2,
15
+ COPYFILE_FICLONE_FORCE: 4,
16
+ O_RDONLY: 0,
17
+ O_WRONLY: 1,
18
+ O_RDWR: 2,
19
+ O_CREAT: 64,
20
+ O_EXCL: 128,
21
+ O_TRUNC: 512,
22
+ O_APPEND: 1024,
23
+ });
24
+
25
+ /** @type {Readonly<Record<string, number>>} */
26
+ const PERMISSION = Object.freeze({
27
+ OWNER_READ: 0o400,
28
+ OWNER_WRITE: 0o200,
29
+ OWNER_EXECUTE: 0o100,
30
+ GROUP_READ: 0o040,
31
+ GROUP_WRITE: 0o020,
32
+ GROUP_EXECUTE: 0o010,
33
+ OTHER_READ: 0o004,
34
+ OTHER_WRITE: 0o002,
35
+ OTHER_EXECUTE: 0o001,
36
+ SETUID: 0o4000,
37
+ SETGID: 0o2000,
38
+ STICKY: 0o1000,
39
+ });
40
+
41
+ /** @type {Readonly<Record<string, number>>} */
42
+ const FILE_TYPE = Object.freeze({
43
+ FILE: 0o100000,
44
+ DIRECTORY: 0o040000,
45
+ SYMBOLIC_LINK: 0o120000,
46
+ });
47
+
48
+ /** @type {number} */
49
+ const DEFAULT_FILE_MODE = 0o666;
50
+
51
+ /** @type {number} */
52
+ const DEFAULT_DIRECTORY_MODE = 0o777;
53
+
54
+ /** @type {number} */
55
+ const DEFAULT_UMASK = 0o022;
56
+
57
+ /** @type {string} */
58
+ const ROOT_PATH = '/';
59
+
60
+ /** @type {string} */
61
+ const PATH_SEPARATOR = '/';
62
+
63
+ /** @type {readonly string[]} */
64
+ const SUPPORTED_ENCODINGS = Object.freeze(['utf8', 'utf-8', 'base64', 'hex']);
65
+
66
+ exports.DEFAULT_DIRECTORY_MODE = DEFAULT_DIRECTORY_MODE;
67
+ exports.DEFAULT_FILE_MODE = DEFAULT_FILE_MODE;
68
+ exports.DEFAULT_UMASK = DEFAULT_UMASK;
69
+ exports.FILE_TYPE = FILE_TYPE;
70
+ exports.PATH_SEPARATOR = PATH_SEPARATOR;
71
+ exports.PERMISSION = PERMISSION;
72
+ exports.ROOT_PATH = ROOT_PATH;
73
+ exports.SUPPORTED_ENCODINGS = SUPPORTED_ENCODINGS;
74
+ exports.constants = constants;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @file Numeric constants shared by every {@link TinyFSCore} backend.
3
+ */
4
+ /** @type {Readonly<Record<string, number>>} */
5
+ export declare const constants: Readonly<Record<string, number>>;
6
+ /** @type {Readonly<Record<string, number>>} */
7
+ export declare const PERMISSION: Readonly<Record<string, number>>;
8
+ /** @type {Readonly<Record<string, number>>} */
9
+ export declare const FILE_TYPE: Readonly<Record<string, number>>;
10
+ /** @type {number} */
11
+ export declare const DEFAULT_FILE_MODE: number;
12
+ /** @type {number} */
13
+ export declare const DEFAULT_DIRECTORY_MODE: number;
14
+ /** @type {number} */
15
+ export declare const DEFAULT_UMASK: number;
16
+ /** @type {string} */
17
+ export declare const ROOT_PATH: string;
18
+ /** @type {string} */
19
+ export declare const PATH_SEPARATOR: string;
20
+ /** @type {readonly string[]} */
21
+ export declare const SUPPORTED_ENCODINGS: readonly string[];
22
+ //# sourceMappingURL=constants.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../../src/v1/libs/fs/constants.mjs"],"names":[],"mappings":"AAAA;;GAEG;AAEH,+CAA+C;AAC/C,eAAO,MAAM,SAAS,EADX,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxC,CAAC;AAEH,+CAA+C;AAC/C,eAAO,MAAM,UAAU,EADZ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAcxC,CAAC;AAEH,+CAA+C;AAC/C,eAAO,MAAM,SAAS,EADX,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKxC,CAAC;AAEH,qBAAqB;AACrB,eAAO,MAAM,iBAAiB,EADnB,MAC2B,CAAC;AAEvC,qBAAqB;AACrB,eAAO,MAAM,sBAAsB,EADxB,MACgC,CAAC;AAE5C,qBAAqB;AACrB,eAAO,MAAM,aAAa,EADf,MACuB,CAAC;AAEnC,qBAAqB;AACrB,eAAO,MAAM,SAAS,EADX,MACiB,CAAC;AAE7B,qBAAqB;AACrB,eAAO,MAAM,cAAc,EADhB,MACsB,CAAC;AAElC,gCAAgC;AAChC,eAAO,MAAM,mBAAmB,EADrB,SAAS,MAAM,EAC0D,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @file Numeric constants shared by every {@link TinyFSCore} backend.
3
+ */
4
+ /** @type {Readonly<Record<string, number>>} */
5
+ export const constants = Object.freeze({
6
+ F_OK: 0,
7
+ R_OK: 4,
8
+ W_OK: 2,
9
+ X_OK: 1,
10
+ COPYFILE_EXCL: 1,
11
+ COPYFILE_FICLONE: 2,
12
+ COPYFILE_FICLONE_FORCE: 4,
13
+ O_RDONLY: 0,
14
+ O_WRONLY: 1,
15
+ O_RDWR: 2,
16
+ O_CREAT: 64,
17
+ O_EXCL: 128,
18
+ O_TRUNC: 512,
19
+ O_APPEND: 1024,
20
+ });
21
+ /** @type {Readonly<Record<string, number>>} */
22
+ export const PERMISSION = Object.freeze({
23
+ OWNER_READ: 0o400,
24
+ OWNER_WRITE: 0o200,
25
+ OWNER_EXECUTE: 0o100,
26
+ GROUP_READ: 0o040,
27
+ GROUP_WRITE: 0o020,
28
+ GROUP_EXECUTE: 0o010,
29
+ OTHER_READ: 0o004,
30
+ OTHER_WRITE: 0o002,
31
+ OTHER_EXECUTE: 0o001,
32
+ SETUID: 0o4000,
33
+ SETGID: 0o2000,
34
+ STICKY: 0o1000,
35
+ });
36
+ /** @type {Readonly<Record<string, number>>} */
37
+ export const FILE_TYPE = Object.freeze({
38
+ FILE: 0o100000,
39
+ DIRECTORY: 0o040000,
40
+ SYMBOLIC_LINK: 0o120000,
41
+ });
42
+ /** @type {number} */
43
+ export const DEFAULT_FILE_MODE = 0o666;
44
+ /** @type {number} */
45
+ export const DEFAULT_DIRECTORY_MODE = 0o777;
46
+ /** @type {number} */
47
+ export const DEFAULT_UMASK = 0o022;
48
+ /** @type {string} */
49
+ export const ROOT_PATH = '/';
50
+ /** @type {string} */
51
+ export const PATH_SEPARATOR = '/';
52
+ /** @type {readonly string[]} */
53
+ export const SUPPORTED_ENCODINGS = Object.freeze(['utf8', 'utf-8', 'base64', 'hex']);
@@ -0,0 +1,118 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @file Byte/string conversion helpers shared by every {@link TinyFSCore} backend.
5
+ */
6
+
7
+ /**
8
+ * Converts a byte array into a base64 string.
9
+ *
10
+ * @param {Uint8Array} bytes Source bytes.
11
+ * @returns {string} The base64 representation.
12
+ */
13
+ const bytesToBase64 = (bytes) => {
14
+ let binary = '';
15
+ for (const byte of bytes) {
16
+ binary += String.fromCharCode(byte);
17
+ }
18
+ return btoa(binary);
19
+ };
20
+
21
+ /**
22
+ * Converts a base64 string into a byte array.
23
+ *
24
+ * @param {string} value Source string.
25
+ * @returns {Uint8Array} The decoded bytes.
26
+ */
27
+ const base64ToBytes = (value) => {
28
+ const binary = atob(value);
29
+ const bytes = new Uint8Array(binary.length);
30
+ for (let index = 0; index < binary.length; index += 1) {
31
+ bytes[index] = binary.charCodeAt(index);
32
+ }
33
+ return bytes;
34
+ };
35
+
36
+ /**
37
+ * Converts a byte array into a lowercase hexadecimal string.
38
+ *
39
+ * @param {Uint8Array} bytes Source bytes.
40
+ * @returns {string} The hexadecimal representation.
41
+ */
42
+ const bytesToHex = (bytes) =>
43
+ Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');
44
+
45
+ /**
46
+ * Converts a hexadecimal string into a byte array.
47
+ *
48
+ * @param {string} value Source string.
49
+ * @returns {Uint8Array} The decoded bytes.
50
+ * @throws {TypeError} When the string length is odd.
51
+ */
52
+ const hexToBytes = (value) => {
53
+ if (value.length % 2 !== 0) {
54
+ throw new TypeError('The "hex" encoded string must have an even length');
55
+ }
56
+ const bytes = new Uint8Array(value.length / 2);
57
+ for (let index = 0; index < bytes.length; index += 1) {
58
+ bytes[index] = Number.parseInt(value.slice(index * 2, index * 2 + 2), 16);
59
+ }
60
+ return bytes;
61
+ };
62
+
63
+ /**
64
+ * Decodes a byte array using the requested encoding.
65
+ *
66
+ * @param {Uint8Array} bytes Source bytes.
67
+ * @param {string | null} encoding Target encoding, or `null` for binary.
68
+ * @returns {string | Uint8Array} The decoded payload.
69
+ */
70
+ const decodeBytes = (bytes, encoding) => {
71
+ if (encoding === null) {
72
+ return bytes;
73
+ }
74
+ if (encoding === 'base64') {
75
+ return bytesToBase64(bytes);
76
+ }
77
+ if (encoding === 'hex') {
78
+ return bytesToHex(bytes);
79
+ }
80
+ return new TextDecoder('utf-8').decode(bytes);
81
+ };
82
+
83
+ /**
84
+ * Converts supported input values into a byte array.
85
+ *
86
+ * @param {string | Uint8Array | ArrayBuffer | ArrayBufferView} data Source payload.
87
+ * @param {string | null} encoding Encoding used when `data` is a string.
88
+ * @returns {Uint8Array} The encoded bytes.
89
+ * @throws {TypeError} When the payload type is not supported.
90
+ */
91
+ const toUint8Array = (data, encoding) => {
92
+ if (typeof data === 'string') {
93
+ if (encoding === 'base64') {
94
+ return base64ToBytes(data);
95
+ }
96
+ if (encoding === 'hex') {
97
+ return hexToBytes(data);
98
+ }
99
+ return new TextEncoder().encode(data);
100
+ }
101
+ if (data instanceof Uint8Array) {
102
+ return data;
103
+ }
104
+ if (data instanceof ArrayBuffer) {
105
+ return new Uint8Array(data);
106
+ }
107
+ if (ArrayBuffer.isView(data)) {
108
+ return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
109
+ }
110
+ throw new TypeError('The "data" argument must be a string, an ArrayBuffer or an ArrayBufferView');
111
+ };
112
+
113
+ exports.base64ToBytes = base64ToBytes;
114
+ exports.bytesToBase64 = bytesToBase64;
115
+ exports.bytesToHex = bytesToHex;
116
+ exports.decodeBytes = decodeBytes;
117
+ exports.hexToBytes = hexToBytes;
118
+ exports.toUint8Array = toUint8Array;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @file Byte/string conversion helpers shared by every {@link TinyFSCore} backend.
3
+ */
4
+ /**
5
+ * Converts a byte array into a base64 string.
6
+ *
7
+ * @param {Uint8Array} bytes Source bytes.
8
+ * @returns {string} The base64 representation.
9
+ */
10
+ export declare const bytesToBase64: (bytes: Uint8Array) => string;
11
+ /**
12
+ * Converts a base64 string into a byte array.
13
+ *
14
+ * @param {string} value Source string.
15
+ * @returns {Uint8Array} The decoded bytes.
16
+ */
17
+ export declare const base64ToBytes: (value: string) => Uint8Array;
18
+ /**
19
+ * Converts a byte array into a lowercase hexadecimal string.
20
+ *
21
+ * @param {Uint8Array} bytes Source bytes.
22
+ * @returns {string} The hexadecimal representation.
23
+ */
24
+ export declare const bytesToHex: (bytes: Uint8Array) => string;
25
+ /**
26
+ * Converts a hexadecimal string into a byte array.
27
+ *
28
+ * @param {string} value Source string.
29
+ * @returns {Uint8Array} The decoded bytes.
30
+ * @throws {TypeError} When the string length is odd.
31
+ */
32
+ export declare const hexToBytes: (value: string) => Uint8Array;
33
+ /**
34
+ * Decodes a byte array using the requested encoding.
35
+ *
36
+ * @param {Uint8Array} bytes Source bytes.
37
+ * @param {string | null} encoding Target encoding, or `null` for binary.
38
+ * @returns {string | Uint8Array} The decoded payload.
39
+ */
40
+ export declare const decodeBytes: (bytes: Uint8Array, encoding: string | null) => string | Uint8Array;
41
+ /**
42
+ * Converts supported input values into a byte array.
43
+ *
44
+ * @param {string | Uint8Array | ArrayBuffer | ArrayBufferView} data Source payload.
45
+ * @param {string | null} encoding Encoding used when `data` is a string.
46
+ * @returns {Uint8Array} The encoded bytes.
47
+ * @throws {TypeError} When the payload type is not supported.
48
+ */
49
+ export declare const toUint8Array: (data: string | Uint8Array | ArrayBuffer | ArrayBufferView, encoding: string | null) => Uint8Array;
50
+ //# sourceMappingURL=encoding.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.mts","sourceRoot":"","sources":["../../../../src/v1/libs/fs/encoding.mjs"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAHf,UAAU,KACR,MAQZ,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAHf,MAAM,KACJ,UASZ,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,UAAU,UAHZ,UAAU,KACR,MAG6D,CAAC;AAE3E;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,UAJZ,MAAM,KACJ,UAYZ,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,UAJb,UAAU,YACV,MAAM,GAAG,IAAI,KACX,MAAM,GAAG,UAarB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,SALd,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,eAAe,YACnD,MAAM,GAAG,IAAI,KACX,UAuBZ,CAAC"}