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
@@ -0,0 +1,83 @@
1
+ 'use strict';
2
+
3
+ var cid = require('../../../../../node_modules/multiformats/dist/src/cid.cjs');
4
+ var sha2 = require('../../../../../node_modules/multiformats/dist/src/hashes/sha2.cjs');
5
+
6
+ /**
7
+ * Multicodec code for the dag-pb format.
8
+ * @type {number}
9
+ */
10
+ const CODEC_DAG_PB = 0x70;
11
+
12
+ /**
13
+ * Multicodec code for raw binary data.
14
+ * @type {number}
15
+ */
16
+ const CODEC_RAW = 0x55;
17
+
18
+ /**
19
+ * @typedef {Object} CIDGenerationResult
20
+ * @property {string} cidString - The string representation of the CID.
21
+ * @property {'v0' | 'v1'} version - The CID version that was generated.
22
+ * @property {'sha256'} hashAlgorithm - The algorithm used for hashing.
23
+ * @property {number} codec - The multicodec code of the content.
24
+ */
25
+
26
+ /**
27
+ * A utility class to generate IPFS Content Identifiers (CIDs) locally.
28
+ */
29
+ class IPFSHasher {
30
+ /** @type {'v0' | 'v1'} */
31
+ #version;
32
+
33
+ /**
34
+ * @param {'v0' | 'v1'} [version='v1'] - The CID version to generate.
35
+ * @throws {TypeError} If the version is not 'v0' or 'v1'.
36
+ */
37
+ constructor(version = 'v1') {
38
+ if (version !== 'v0' && version !== 'v1') {
39
+ throw new TypeError('Invalid CID version. Use "v0" or "v1".');
40
+ }
41
+ this.#version = version;
42
+ }
43
+
44
+ /**
45
+ * Generates a CID from the provided data.
46
+ *
47
+ * @param {Uint8Array} data - The raw data to be hashed.
48
+ * @returns {Promise<CIDGenerationResult>} A promise resolving to the CID result.
49
+ * @throws {TypeError} If the input data is not a Uint8Array.
50
+ */
51
+ async generate(data) {
52
+ if (!(data instanceof Uint8Array)) {
53
+ throw new TypeError(`Expected Uint8Array, but received ${typeof data}.`);
54
+ }
55
+
56
+ // sha256.digest is asynchronous and must be awaited.
57
+ const hash = await sha2.sha256.digest(data);
58
+
59
+ /** @type {CID} */
60
+ let cid$1;
61
+ /** @type {number} */
62
+ let codec;
63
+
64
+ if (this.#version === 'v0') {
65
+ // CIDv0 is locked to dag-pb + sha256. The codec is implicit.
66
+ codec = CODEC_DAG_PB;
67
+ cid$1 = cid.CID.createV0(hash);
68
+ } else {
69
+ // CIDv1 is explicit: we choose the raw codec for file bytes.
70
+ codec = CODEC_RAW;
71
+ cid$1 = cid.CID.create(1, codec, hash);
72
+ }
73
+
74
+ return {
75
+ cidString: cid$1.toString(),
76
+ version: this.#version,
77
+ hashAlgorithm: 'sha256',
78
+ codec,
79
+ };
80
+ }
81
+ }
82
+
83
+ module.exports = IPFSHasher;
@@ -0,0 +1,46 @@
1
+ export type CIDGenerationResult = {
2
+ /**
3
+ * - The string representation of the CID.
4
+ */
5
+ cidString: string;
6
+ /**
7
+ * - The CID version that was generated.
8
+ */
9
+ version: 'v0' | 'v1';
10
+ /**
11
+ * - The algorithm used for hashing.
12
+ */
13
+ hashAlgorithm: 'sha256';
14
+ /**
15
+ * - The multicodec code of the content.
16
+ */
17
+ codec: number;
18
+ };
19
+ /**
20
+ * @typedef {Object} CIDGenerationResult
21
+ * @property {string} cidString - The string representation of the CID.
22
+ * @property {'v0' | 'v1'} version - The CID version that was generated.
23
+ * @property {'sha256'} hashAlgorithm - The algorithm used for hashing.
24
+ * @property {number} codec - The multicodec code of the content.
25
+ */
26
+ /**
27
+ * A utility class to generate IPFS Content Identifiers (CIDs) locally.
28
+ */
29
+ declare class IPFSHasher {
30
+ #private;
31
+ /**
32
+ * @param {'v0' | 'v1'} [version='v1'] - The CID version to generate.
33
+ * @throws {TypeError} If the version is not 'v0' or 'v1'.
34
+ */
35
+ constructor(version?: 'v0' | 'v1');
36
+ /**
37
+ * Generates a CID from the provided data.
38
+ *
39
+ * @param {Uint8Array} data - The raw data to be hashed.
40
+ * @returns {Promise<CIDGenerationResult>} A promise resolving to the CID result.
41
+ * @throws {TypeError} If the input data is not a Uint8Array.
42
+ */
43
+ generate(data: Uint8Array): Promise<CIDGenerationResult>;
44
+ }
45
+ export default IPFSHasher;
46
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../../../../src/v1/webTemplates/multiformats/14.0/IPFSHasher/index.mjs"],"names":[],"mappings":"AAgBG,YAAkB,mBAAmB,GACrC;;;;IAAmB,SAAS,EAAjB,MAAM,CACjB;;;;IAAwB,OAAO,EAApB,IAAI,GAAG,IAAI,CACtB;;;;IAAqB,aAAa,EAAvB,QAAQ,CACnB;;;;IAAmB,KAAK,EAAb,MAAM,CACnB;CAAA,CAAA;AAND;;;;;;GAMG;AAEH;;GAEG;AACH,cAAM,UAAU;;IAId;;;OAGG;IACH,YAAY,OAAO,AAHhB,CACA,EADQ,IAAI,GAAG,IAGQ,EAKzB;IAED;;;;;;OAMG;IACG,QAAQ,CAAC,IAAI,EAJR,UAIQ,GAHN,OAAO,CAAC,mBAAmB,CAAC,CAgCxC;CACF;eAEc,UAAU"}
@@ -0,0 +1,71 @@
1
+ import { CID } from 'multiformats/cid';
2
+ import { sha256 } from 'multiformats/hashes/sha2';
3
+ /**
4
+ * Multicodec code for the dag-pb format.
5
+ * @type {number}
6
+ */
7
+ const CODEC_DAG_PB = 0x70;
8
+ /**
9
+ * Multicodec code for raw binary data.
10
+ * @type {number}
11
+ */
12
+ const CODEC_RAW = 0x55;
13
+ /**
14
+ * @typedef {Object} CIDGenerationResult
15
+ * @property {string} cidString - The string representation of the CID.
16
+ * @property {'v0' | 'v1'} version - The CID version that was generated.
17
+ * @property {'sha256'} hashAlgorithm - The algorithm used for hashing.
18
+ * @property {number} codec - The multicodec code of the content.
19
+ */
20
+ /**
21
+ * A utility class to generate IPFS Content Identifiers (CIDs) locally.
22
+ */
23
+ class IPFSHasher {
24
+ /** @type {'v0' | 'v1'} */
25
+ #version;
26
+ /**
27
+ * @param {'v0' | 'v1'} [version='v1'] - The CID version to generate.
28
+ * @throws {TypeError} If the version is not 'v0' or 'v1'.
29
+ */
30
+ constructor(version = 'v1') {
31
+ if (version !== 'v0' && version !== 'v1') {
32
+ throw new TypeError('Invalid CID version. Use "v0" or "v1".');
33
+ }
34
+ this.#version = version;
35
+ }
36
+ /**
37
+ * Generates a CID from the provided data.
38
+ *
39
+ * @param {Uint8Array} data - The raw data to be hashed.
40
+ * @returns {Promise<CIDGenerationResult>} A promise resolving to the CID result.
41
+ * @throws {TypeError} If the input data is not a Uint8Array.
42
+ */
43
+ async generate(data) {
44
+ if (!(data instanceof Uint8Array)) {
45
+ throw new TypeError(`Expected Uint8Array, but received ${typeof data}.`);
46
+ }
47
+ // sha256.digest is asynchronous and must be awaited.
48
+ const hash = await sha256.digest(data);
49
+ /** @type {CID} */
50
+ let cid;
51
+ /** @type {number} */
52
+ let codec;
53
+ if (this.#version === 'v0') {
54
+ // CIDv0 is locked to dag-pb + sha256. The codec is implicit.
55
+ codec = CODEC_DAG_PB;
56
+ cid = CID.createV0(hash);
57
+ }
58
+ else {
59
+ // CIDv1 is explicit: we choose the raw codec for file bytes.
60
+ codec = CODEC_RAW;
61
+ cid = CID.create(1, codec, hash);
62
+ }
63
+ return {
64
+ cidString: cid.toString(),
65
+ version: this.#version,
66
+ hashAlgorithm: 'sha256',
67
+ codec,
68
+ };
69
+ }
70
+ }
71
+ export default IPFSHasher;
@@ -0,0 +1,493 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+ var vite = require('vite');
5
+
6
+ /**
7
+ * @typedef {Object} TinyWebWorkerConfig
8
+ * @property {string} entry - The source file path for the Web Worker (e.g., 'src/workers/myWorker.mjs').
9
+ * @property {string} filename - The output filename for the Web Worker (e.g., 'myWorker.js').
10
+ */
11
+
12
+ /**
13
+ * @typedef {Object} TinyVitePwaOptions
14
+ * @property {Record<any, any>} manifest - The Web App Manifest object.
15
+ * @property {string} manifestPath - The URL path where the manifest should be served.
16
+ * @property {string} srcDir - The source directory containing the Service Worker.
17
+ * @property {string} filename - The name of the Service Worker file.
18
+ * @property {boolean} [injectRegister=true] - Optional. Whether to automatically inject the SW registration script into the HTML <head>.
19
+ * @property {boolean} [injectManifestToGlobal=true] - Optional. Whether to inject the manifest into the global scope via Vite's `define`.
20
+ * @property {RegistrationOptions} [swRegistrationOptions] - Optional. Registration options for the Service Worker.
21
+ * @property {TinyWebWorkerConfig[]} [webWorkers] - Optional. A list of Web Workers to be bundled and served alongside the PWA.
22
+ */
23
+
24
+ // ANSI Color Codes
25
+ const colors = {
26
+ reset: '\x1b[0m',
27
+ bright: '\x1b[1m',
28
+ dim: '\x1b[2m',
29
+ red: '\x1b[31m',
30
+ green: '\x1b[32m',
31
+ yellow: '\x1b[33m',
32
+ blue: '\x1b[34m',
33
+ cyan: '\x1b[36m',
34
+ };
35
+
36
+ /**
37
+ * Internal logger to maintain consistent plugin output formatting using ANSI colors.
38
+ */
39
+ const logger = {
40
+ prefix: `${colors.cyan}[tiny-vite-pwa]${colors.reset}`,
41
+ info: (/** @type {string} */ msg) =>
42
+ console.log(`${logger.prefix} ${colors.blue}[INFO]${colors.reset} ${msg}`),
43
+ success: (/** @type {string} */ msg) =>
44
+ console.log(`${logger.prefix} ${colors.green}[SUCCESS]${colors.reset} ${msg}${colors.reset}`),
45
+ warn: (/** @type {string} */ msg) =>
46
+ console.warn(`${logger.prefix} ${colors.yellow}[WARN]${colors.reset} ${msg}${colors.reset}`),
47
+ error: (/** @type {string} */ msg, /** @type {Error} */ err) =>
48
+ console.error(
49
+ `${logger.prefix} ${colors.red}[ERROR]${colors.reset} ${msg}${colors.reset}`,
50
+ err || '',
51
+ ),
52
+ log: (/** @type {string} */ msg) => console.log(msg),
53
+ dim: (/** @type {string} */ msg) => console.log(`${colors.dim}${msg}${colors.reset}`),
54
+ };
55
+
56
+ /**
57
+ * Custom PWA Plugin.
58
+ * Resolves Manifest, Dev HMR, Service Worker, and multiple Web Workers bundling.
59
+ *
60
+ * NOTE: The Service Worker and Web Worker files are always served from the root directory of the website.
61
+ *
62
+ * TypeScript Support: To enable IntelliSense and avoid type errors when using
63
+ * the injected '__TINY_PWA_MANIFEST__' global variable, add the following to your `env.d.ts` file:
64
+ *
65
+ * ```typescript
66
+ * declare global {
67
+ * interface Window {
68
+ * __TINY_PWA_MANIFEST__: Record<string, any>;
69
+ * }
70
+ * }
71
+ * ```
72
+ *
73
+ * @param {TinyVitePwaOptions} options - The configuration options for the plugin.
74
+ * @returns {import('vite').Plugin} The Vite plugin object.
75
+ */
76
+ const TinyVitePwaPlugin = (options) => {
77
+ // --- Strict Runtime Validation ---
78
+ if (typeof options !== 'object' || options === null) {
79
+ throw new TypeError('The "options" argument must be a non-null object.');
80
+ }
81
+
82
+ if (typeof options.manifest !== 'object' || options.manifest === null) {
83
+ throw new TypeError('The "manifest" property must be an object.');
84
+ }
85
+
86
+ if (typeof options.manifestPath !== 'string') {
87
+ throw new TypeError('The "manifestPath" property must be a string.');
88
+ }
89
+
90
+ if (typeof options.srcDir !== 'string') {
91
+ throw new TypeError('The "srcDir" property must be a string.');
92
+ }
93
+
94
+ if (typeof options.filename !== 'string') {
95
+ throw new TypeError('The "filename" property must be a string.');
96
+ }
97
+
98
+ if (options.injectRegister !== undefined && typeof options.injectRegister !== 'boolean') {
99
+ throw new TypeError('The "injectRegister" property must be a boolean.');
100
+ }
101
+
102
+ if (
103
+ options.injectManifestToGlobal !== undefined &&
104
+ typeof options.injectManifestToGlobal !== 'boolean'
105
+ ) {
106
+ throw new TypeError('The "injectManifestToGlobal" property must be a boolean.');
107
+ }
108
+
109
+ if (
110
+ options.swRegistrationOptions !== undefined &&
111
+ (typeof options.swRegistrationOptions !== 'object' ||
112
+ options.swRegistrationOptions === null ||
113
+ Array.isArray(options.swRegistrationOptions))
114
+ ) {
115
+ throw new TypeError('The "swRegistrationOptions" property must be an object.');
116
+ }
117
+
118
+ const filenamePattern = /^[a-zA-Z0-9._-]+$/;
119
+ if (!filenamePattern.test(options.filename)) {
120
+ throw new RangeError(
121
+ 'The "filename" property contains invalid characters. To prevent injection, only alphanumeric characters, dots (.), underscores (_), and hyphens (-) are allowed.',
122
+ );
123
+ }
124
+
125
+ // Validate Web Workers Array if provided
126
+ if (options.webWorkers !== undefined) {
127
+ if (!Array.isArray(options.webWorkers)) {
128
+ throw new TypeError('The "webWorkers" property must be an array.');
129
+ }
130
+ options.webWorkers.forEach((ww, index) => {
131
+ if (typeof ww !== 'object' || ww === null) {
132
+ throw new TypeError(`webWorkers[${index}] must be a non-null object.`);
133
+ }
134
+ if (typeof ww.entry !== 'string') {
135
+ throw new TypeError(`webWorkers[${index}].entry must be a string.`);
136
+ }
137
+ if (typeof ww.filename !== 'string') {
138
+ throw new TypeError(`webWorkers[${index}].filename must be a string.`);
139
+ }
140
+ if (!filenamePattern.test(ww.filename)) {
141
+ throw new RangeError(`webWorkers[${index}].filename contains invalid characters.`);
142
+ }
143
+ });
144
+ }
145
+
146
+ const {
147
+ manifest,
148
+ manifestPath,
149
+ srcDir,
150
+ filename,
151
+ swRegistrationOptions,
152
+ webWorkers = [],
153
+ } = options;
154
+ const injectRegister = options.injectRegister ?? true;
155
+ const injectManifestToGlobal = options.injectManifestToGlobal ?? true;
156
+
157
+ /** @type {string} */
158
+ let swSourcePath;
159
+ /** @type {Array<{ entryPath: string, filename: string }>} */
160
+ let resolvedWebWorkers = [];
161
+ /** @type {import('vite').ResolvedConfig} */
162
+ let viteConfig;
163
+
164
+ return {
165
+ name: 'tiny-vite-pwa',
166
+
167
+ // Capture Vite configuration to use during build mode
168
+ configResolved(config) {
169
+ viteConfig = config;
170
+ swSourcePath = path.resolve(config.root, srcDir, filename);
171
+
172
+ // Resolve absolute paths for Web Workers
173
+ resolvedWebWorkers = webWorkers.map((ww) => ({
174
+ entryPath: path.resolve(config.root, ww.entry, ww.filename),
175
+ filename: ww.filename,
176
+ }));
177
+ },
178
+
179
+ config(config) {
180
+ const define = { ...config.define };
181
+ if (injectManifestToGlobal) define.__TINY_PWA_MANIFEST__ = JSON.stringify(manifest);
182
+ return { ...config, define };
183
+ },
184
+
185
+ // REQUIREMENTS 1 & 4 (DEV Mode): Serve the manifest, Service Worker, and Web Workers
186
+ configureServer(server) {
187
+ // Extract server info to build a clickable URL
188
+ const serverConfig = server.config.server || {};
189
+ let host = serverConfig.host;
190
+ if (host === true) {
191
+ host = '0.0.0.0';
192
+ } else if (typeof host !== 'string') {
193
+ host = 'localhost';
194
+ }
195
+
196
+ const port = serverConfig.port;
197
+ const isHttps = serverConfig.https ? true : false;
198
+
199
+ const protocol = isHttps ? 'https' : 'http';
200
+
201
+ // If host is 0.0.0.0, use localhost so the link is clickable in the terminal
202
+ const displayHost = host === '0.0.0.0' ? 'localhost' : host;
203
+ const baseUrl = `${protocol}://${displayHost}:${port}`;
204
+
205
+ const normalizedManifestPath = manifestPath.startsWith('/')
206
+ ? manifestPath
207
+ : `/${manifestPath}`;
208
+ const swUrl = `/${filename}`;
209
+
210
+ server.middlewares.use(async (req, res, next) => {
211
+ // We parse the incoming request URL to extract only the pathname.
212
+ // This ensures that requests with query parameters (e.g., /sw.js?v=123)
213
+ // are correctly matched to the file paths.
214
+ const requestUrl = new URL(req.url ?? '', 'http://localhost');
215
+ const pathname = requestUrl.pathname;
216
+
217
+ // Serve manifest.json dynamically
218
+ if (pathname === normalizedManifestPath) {
219
+ res.setHeader('Content-Type', 'application/json');
220
+ res.end(JSON.stringify(manifest, null, 2));
221
+ return;
222
+ }
223
+
224
+ // Serve the Service Worker in Dev mode using Vite's transformer
225
+ if (pathname === swUrl) {
226
+ try {
227
+ const transformed = await server.transformRequest(swSourcePath);
228
+ if (transformed) {
229
+ res.setHeader('Content-Type', 'application/javascript');
230
+ res.end(transformed.code);
231
+ return;
232
+ }
233
+ } catch (e) {
234
+ logger.error(
235
+ 'Error transforming the SW in dev:',
236
+ e instanceof Error ? e : new Error('Unknown Error'),
237
+ );
238
+ }
239
+ }
240
+
241
+ // Serve Web Workers in Dev mode
242
+ for (const ww of resolvedWebWorkers) {
243
+ if (pathname === `/${ww.filename}`) {
244
+ try {
245
+ const transformed = await server.transformRequest(ww.entryPath);
246
+ if (transformed) {
247
+ res.setHeader('Content-Type', 'application/javascript');
248
+ res.end(transformed.code);
249
+ return;
250
+ }
251
+ } catch (e) {
252
+ logger.error(
253
+ `Error transforming Web Worker (${ww.filename}) in dev:`,
254
+ e instanceof Error ? e : new Error('Unknown Error'),
255
+ );
256
+ }
257
+ }
258
+ }
259
+
260
+ next();
261
+ });
262
+
263
+ logger.success(`Manifest available at: ${baseUrl}${normalizedManifestPath}`);
264
+ logger.success(`Service Worker available at: ${baseUrl}${swUrl}`);
265
+
266
+ resolvedWebWorkers.forEach((ww) => {
267
+ logger.success(`Web Worker available at: ${baseUrl}/${ww.filename}`);
268
+ });
269
+
270
+ logger.warn(
271
+ `NOTE: If your Service Worker implements client-side routing, ensure it is configured to bypass interception for the manifest, SW, and WW files.`,
272
+ );
273
+ },
274
+
275
+ // REQUIREMENT 3: Monitor SW and WW changes and notify the frontend
276
+ handleHotUpdate({ file, server }) {
277
+ // Check for Service Worker updates
278
+ if (file.startsWith(path.resolve(viteConfig.root, srcDir))) {
279
+ logger.info('Service Worker change detected. Notifying frontend...');
280
+ // Send a custom event via Vite's WebSocket
281
+ server.ws.send({
282
+ type: 'custom',
283
+ event: 'pwa:sw-updated',
284
+ data: { message: 'The Service Worker file has been changed.' },
285
+ });
286
+
287
+ // Return an empty array so Vite does not attempt a full page reload automatically
288
+ return [];
289
+ }
290
+
291
+ // Check for Web Worker updates
292
+ for (const ww of resolvedWebWorkers) {
293
+ if (file === ww.entryPath) {
294
+ logger.info(`Web Worker change detected (${ww.filename}). Notifying frontend...`);
295
+ server.ws.send({
296
+ type: 'custom',
297
+ event: 'pwa:ww-updated',
298
+ data: {
299
+ message: `The Web Worker file ${ww.filename} has been changed.`,
300
+ filename: ww.filename,
301
+ },
302
+ });
303
+ return [];
304
+ }
305
+ }
306
+ },
307
+
308
+ // INJECT HTML SCRIPT: Inject the SW registration code and the Manifest link into the output HTML
309
+ transformIndexHtml() {
310
+ // In production mode, we append a timestamp to the URL to force cache busting.
311
+ // In development mode, we omit the timestamp to avoid generating unnecessary logs on every reload.
312
+ const isBuild = viteConfig && viteConfig.command === 'build';
313
+
314
+ /**
315
+ * Safely appends a cache-busting timestamp to a URL string.
316
+ * @param {string} urlStr - The base URL path.
317
+ * @returns {string} The URL path with the 'v' parameter appended correctly.
318
+ */
319
+ const getVersionedUrl = (urlStr) => {
320
+ // We use a dummy base ('http://localhost') because the URL constructor
321
+ // requires an absolute URL to parse relative paths correctly.
322
+ const url = new URL(urlStr, 'http://localhost');
323
+
324
+ // .set() is smart: it uses '?' if no params exist, or '&' if they do.
325
+ url.searchParams.set('v', Date.now().toString());
326
+
327
+ // We return only the pathname and search (e.g., "/sw.js?v=123")
328
+ // to keep the injection relative for the HTML.
329
+ return url.pathname + url.search;
330
+ };
331
+
332
+ const swUrl = getVersionedUrl(`/${filename}`);
333
+
334
+ // Prepare the manifest URL with cache busting for production
335
+ const normalizedManifestHref = manifestPath.startsWith('/')
336
+ ? manifestPath
337
+ : `/${manifestPath}`;
338
+ const manifestUrl = getVersionedUrl(normalizedManifestHref);
339
+
340
+ /** @type {import('vite').HtmlTagDescriptor[]} */
341
+ const insertData = [];
342
+
343
+ // Manifest
344
+ logger.info(`Injecting Manifest into HTML: ${manifestUrl}`);
345
+ insertData.push({
346
+ tag: 'link',
347
+ injectTo: 'head',
348
+ attrs: {
349
+ rel: 'manifest',
350
+ href: manifestUrl,
351
+ },
352
+ });
353
+
354
+ // SW
355
+ if (injectRegister) {
356
+ logger.info(`Injecting Service Worker into HTML: ${swUrl}`);
357
+
358
+ // Prepare the registration options string safely using JSON.stringify
359
+ // If no options are provided, swOptionsString remains an empty string.
360
+ const swOptionsString = swRegistrationOptions
361
+ ? `, ${JSON.stringify(swRegistrationOptions)}`
362
+ : '';
363
+
364
+ insertData.push({
365
+ tag: 'script',
366
+ injectTo: 'head',
367
+ children: `
368
+ if ('serviceWorker' in navigator) {
369
+ window.addEventListener('load', () => {
370
+ navigator.serviceWorker.register('${swUrl}'${swOptionsString})${!isBuild ? `.then(() => console.log('[tiny-vite-pwa] SW registered.')).catch(err => console.error('[tiny-vite-pwa] SW error:', err))` : ''};
371
+ });
372
+ };`
373
+ .replace(/\n/g, '')
374
+ .replace(/ /g, '')
375
+ .trim(),
376
+ });
377
+ }
378
+
379
+ return insertData;
380
+ },
381
+
382
+ // REQUIREMENT 1 (PROD Mode): Save the manifest to the dist directory
383
+ generateBundle() {
384
+ // Remove the leading slash from the path to prevent Rollup errors
385
+ const emitPath = manifestPath.replace(/^\//, '');
386
+ this.emitFile({
387
+ type: 'asset',
388
+ fileName: emitPath,
389
+ source: JSON.stringify(manifest),
390
+ });
391
+ },
392
+
393
+ // REQUIREMENT 4 (PROD Mode): Bundle the Service Worker and Web Workers separately
394
+ async closeBundle() {
395
+ // Only run this during the build command (production)
396
+ if (viteConfig.command === 'build') {
397
+ const projectRoot = viteConfig.root || process.cwd();
398
+
399
+ logger.dim('--------------------------------------------------');
400
+ logger.log(` Mode: ${colors.bright}${viteConfig.mode}${colors.reset}`);
401
+
402
+ // --- Build Service Worker ---
403
+ const relativeSourceSW = path.relative(projectRoot, swSourcePath);
404
+ const relativeDestSW = path.relative(projectRoot, path.resolve(viteConfig.build.outDir, filename));
405
+
406
+ const manifestDestPath = path.resolve(viteConfig.build.outDir, manifestPath.replace(/^\//, ''));
407
+ const relativeDestManifest = path.relative(projectRoot, manifestDestPath);
408
+
409
+ logger.info('Initiating Service Worker bundling process...');
410
+
411
+ // Manifest Info
412
+ logger.log(` Manifest: ${colors.cyan}${relativeDestManifest}${colors.reset}`);
413
+
414
+ // Service Worker Info
415
+ logger.log(` SW Source: ${colors.cyan}${relativeSourceSW}${colors.reset}`);
416
+ logger.log(` SW Dest: ${colors.cyan}${relativeDestSW}${colors.reset}`);
417
+
418
+ try {
419
+ await vite.build({
420
+ configFile: false, // Ignore the main vite.config.js to prevent infinite loops
421
+ mode: viteConfig.mode,
422
+ build: {
423
+ outDir: viteConfig.build.outDir,
424
+ emptyOutDir: false, // IMPORTANT: Do not delete the React build that was just completed
425
+ lib: {
426
+ entry: swSourcePath,
427
+ name: 'ServiceWorker',
428
+ formats: ['iife'], // IIFE bundles all imports into a single file (classic SW standard)
429
+ fileName: () => filename,
430
+ },
431
+ rollupOptions: {
432
+ // Ensures no hashes are added to the SW filename
433
+ output: { entryFileNames: filename },
434
+ },
435
+ },
436
+ });
437
+ logger.success('Service Worker bundled successfully.');
438
+ } catch (e) {
439
+ logger.error(
440
+ 'Failed to bundle the Service Worker.',
441
+ e instanceof Error ? e : new Error('Unknown Error'),
442
+ );
443
+ }
444
+
445
+ // --- Build Web Workers ---
446
+ if (resolvedWebWorkers.length > 0) {
447
+ logger.dim('--------------------------------------------------');
448
+ logger.info('Initiating Web Workers bundling process...');
449
+
450
+ for (const ww of resolvedWebWorkers) {
451
+ const relativeSourceWW = path.relative(projectRoot, ww.entryPath);
452
+ const relativeDestWW = path.relative(
453
+ projectRoot,
454
+ path.resolve(viteConfig.build.outDir, ww.filename),
455
+ );
456
+
457
+ logger.log(` WW Source: ${colors.cyan}${relativeSourceWW}${colors.reset}`);
458
+ logger.log(` WW Dest: ${colors.cyan}${relativeDestWW}${colors.reset}`);
459
+
460
+ try {
461
+ await vite.build({
462
+ configFile: false,
463
+ mode: viteConfig.mode,
464
+ build: {
465
+ outDir: viteConfig.build.outDir,
466
+ emptyOutDir: false,
467
+ lib: {
468
+ entry: ww.entryPath,
469
+ name: ww.filename.replace(/\.[^/.]+$/, ''),
470
+ formats: ['iife'],
471
+ fileName: () => ww.filename,
472
+ },
473
+ rollupOptions: {
474
+ output: { entryFileNames: ww.filename },
475
+ },
476
+ },
477
+ });
478
+ logger.success(`Web Worker (${ww.filename}) bundled successfully.`);
479
+ } catch (e) {
480
+ logger.error(
481
+ `Failed to bundle the Web Worker (${ww.filename}).`,
482
+ e instanceof Error ? e : new Error('Unknown Error'),
483
+ );
484
+ }
485
+ }
486
+ }
487
+ logger.dim('--------------------------------------------------');
488
+ }
489
+ },
490
+ };
491
+ };
492
+
493
+ module.exports = TinyVitePwaPlugin;