tiny-essentials 1.28.0 → 1.28.2

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 (323) hide show
  1. package/changelog/1/28/1.md +23 -0
  2. package/changelog/1/28/2.md +43 -0
  3. package/dist/_/numbers.d.mts +91 -16
  4. package/dist/v1/TinyAdvancedRaffle.min.js +1 -1
  5. package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
  6. package/dist/v1/TinyAnalogClock.min.js +1 -1
  7. package/dist/v1/TinyBasicsEs.min.js +1 -1
  8. package/dist/v1/TinyDayNightCycle.min.js +1 -1
  9. package/dist/v1/TinyDragDropDetector.min.js +1 -1
  10. package/dist/v1/TinyDragger.min.js +1 -1
  11. package/dist/v1/TinyElementObserver.min.js +1 -1
  12. package/dist/v1/TinyEssentials.min.js +1 -1
  13. package/dist/v1/TinyGamepad.min.js +1 -1
  14. package/dist/v1/TinyHtml.min.js +1 -1
  15. package/dist/v1/TinyI18.min.js +1 -1
  16. package/dist/v1/TinyIframeEvents.min.js +1 -1
  17. package/dist/v1/TinyLocalStorage.min.js +1 -1
  18. package/dist/v1/TinyMediaPlayer.min.js +1 -1
  19. package/dist/v1/TinyNewWinEvents.min.js +1 -1
  20. package/dist/v1/TinyNotifyCenter.min.js +1 -1
  21. package/dist/v1/TinyRadioFm.min.js +1 -1
  22. package/dist/v1/TinyRateLimiter.min.js +1 -1
  23. package/dist/v1/TinySmartScroller.min.js +1 -1
  24. package/dist/v1/TinyTextDiffer.min.js +1 -1
  25. package/dist/v1/TinyTextarea.min.js +1 -1
  26. package/dist/v1/TinyTimeout.min.js +1 -1
  27. package/dist/v1/TinyToastNotify.min.js +1 -1
  28. package/dist/v1/TinyUploadClicker.min.js +1 -1
  29. package/dist/v1/UltraRandomMsgGen.min.js +1 -1
  30. package/dist/v1/basics/array.cjs +57 -9
  31. package/dist/v1/basics/array.d.mts +28 -12
  32. package/dist/v1/basics/array.mjs +51 -9
  33. package/dist/v1/basics/clock.cjs +94 -42
  34. package/dist/v1/basics/clock.d.mts +22 -22
  35. package/dist/v1/basics/clock.mjs +91 -54
  36. package/dist/v1/basics/collision.d.mts +245 -104
  37. package/dist/v1/basics/deprecated/html.cjs +246 -0
  38. package/dist/v1/basics/deprecated/html.d.mts +63 -0
  39. package/dist/v1/basics/deprecated/html.mjs +190 -0
  40. package/dist/v1/basics/extendObjType/Buffer.d.mts +1 -1
  41. package/dist/v1/basics/fullScreen.d.mts +47 -7
  42. package/dist/v1/basics/html.cjs +149 -130
  43. package/dist/v1/basics/html.d.mts +69 -113
  44. package/dist/v1/basics/html.mjs +113 -105
  45. package/dist/v1/basics/index.cjs +2 -0
  46. package/dist/v1/basics/index.d.mts +11 -65
  47. package/dist/v1/basics/index.mjs +3 -3
  48. package/dist/v1/basics/mediaContent.cjs +116 -32
  49. package/dist/v1/basics/mediaContent.d.mts +143 -159
  50. package/dist/v1/basics/mediaContent.mjs +105 -33
  51. package/dist/v1/basics/objChecker.cjs +7 -5
  52. package/dist/v1/basics/objChecker.d.mts +5 -4
  53. package/dist/v1/basics/objChecker.mjs +6 -6
  54. package/dist/v1/basics/objFilter.cjs +71 -14
  55. package/dist/v1/basics/objFilter.d.mts +16 -19
  56. package/dist/v1/basics/objFilter.mjs +63 -14
  57. package/dist/v1/basics/simpleMath.cjs +81 -25
  58. package/dist/v1/basics/simpleMath.d.mts +22 -22
  59. package/dist/v1/basics/simpleMath.mjs +70 -27
  60. package/dist/v1/basics/text.cjs +76 -31
  61. package/dist/v1/basics/text.d.mts +64 -14
  62. package/dist/v1/basics/text.mjs +62 -31
  63. package/dist/v1/build/ColorSafeStringify.d.mts +1 -1
  64. package/dist/v1/build/TinyAdvancedRaffle.d.mts +1 -1
  65. package/dist/v1/build/TinyAfterScrollWatcher.d.mts +1 -1
  66. package/dist/v1/build/TinyAnalogClock.d.mts +1 -1
  67. package/dist/v1/build/TinyArrayComparator.d.mts +1 -1
  68. package/dist/v1/build/TinyArrayPaginator.d.mts +1 -1
  69. package/dist/v1/build/TinyClassManager.d.mts +1 -1
  70. package/dist/v1/build/TinyClipboard.d.mts +1 -1
  71. package/dist/v1/build/TinyColorConverter.d.mts +1 -1
  72. package/dist/v1/build/TinyColorValidator.d.mts +1 -1
  73. package/dist/v1/build/TinyCookieConsent.d.mts +1 -1
  74. package/dist/v1/build/TinyDayNightCycle.d.mts +1 -1
  75. package/dist/v1/build/TinyDomReadyManager.d.mts +1 -1
  76. package/dist/v1/build/TinyDragDropDetector.d.mts +1 -1
  77. package/dist/v1/build/TinyDragger.d.mts +1 -1
  78. package/dist/v1/build/TinyElementObserver.d.mts +1 -1
  79. package/dist/v1/build/TinyGamepad.d.mts +1 -1
  80. package/dist/v1/build/TinyHtml.d.mts +1 -1
  81. package/dist/v1/build/TinyI18.d.mts +1 -1
  82. package/dist/v1/build/TinyIframeEvents.d.mts +1 -1
  83. package/dist/v1/build/TinyInventory.d.mts +1 -1
  84. package/dist/v1/build/TinyInventoryTrader.d.mts +1 -1
  85. package/dist/v1/build/TinyLevelUp.d.mts +1 -1
  86. package/dist/v1/build/TinyLoadingScreen.d.mts +1 -1
  87. package/dist/v1/build/TinyLocalStorage.d.mts +1 -1
  88. package/dist/v1/build/TinyMediaPlayer.d.mts +1 -1
  89. package/dist/v1/build/TinyNeedBar.d.mts +1 -1
  90. package/dist/v1/build/TinyNewWinEvents.d.mts +1 -1
  91. package/dist/v1/build/TinyNotifications.d.mts +1 -1
  92. package/dist/v1/build/TinyNotifyCenter.d.mts +1 -1
  93. package/dist/v1/build/TinyPromiseQueue.d.mts +1 -1
  94. package/dist/v1/build/TinyRadioFm.d.mts +1 -1
  95. package/dist/v1/build/TinyRateLimiter.d.mts +1 -1
  96. package/dist/v1/build/TinySimpleDice.d.mts +1 -1
  97. package/dist/v1/build/TinySmartScroller.d.mts +1 -1
  98. package/dist/v1/build/TinyTextDiffer.d.mts +1 -1
  99. package/dist/v1/build/TinyTextRangeEditor.d.mts +1 -1
  100. package/dist/v1/build/TinyTextarea.d.mts +1 -1
  101. package/dist/v1/build/TinyTimeout.d.mts +1 -1
  102. package/dist/v1/build/TinyToastNotify.d.mts +1 -1
  103. package/dist/v1/build/TinyUploadClicker.d.mts +1 -1
  104. package/dist/v1/build/UltraRandomMsgGen.d.mts +1 -1
  105. package/dist/v1/fileManager/asyncFuncs.d.mts +13 -13
  106. package/dist/v1/fileManager/index.d.mts +3 -29
  107. package/dist/v1/fileManager/normalFuncs.d.mts +22 -22
  108. package/dist/v1/index.cjs +4 -0
  109. package/dist/v1/index.d.mts +54 -137
  110. package/dist/v1/index.mjs +4 -3
  111. package/dist/v1/libs/ColorSafeStringify.d.mts +3 -12
  112. package/dist/v1/libs/TinyAdvancedRaffle.cjs +64 -50
  113. package/dist/v1/libs/TinyAdvancedRaffle.d.mts +64 -116
  114. package/dist/v1/libs/TinyAdvancedRaffle.mjs +62 -49
  115. package/dist/v1/libs/TinyAfterScrollWatcher.cjs +17 -1
  116. package/dist/v1/libs/TinyAfterScrollWatcher.d.mts +15 -19
  117. package/dist/v1/libs/TinyAfterScrollWatcher.mjs +15 -1
  118. package/dist/v1/libs/TinyAnalogClock.cjs +60 -0
  119. package/dist/v1/libs/TinyAnalogClock.d.mts +12 -9
  120. package/dist/v1/libs/TinyAnalogClock.mjs +57 -0
  121. package/dist/v1/libs/TinyArrayComparator.d.mts +14 -20
  122. package/dist/v1/libs/TinyArrayPaginator.d.mts +22 -26
  123. package/dist/v1/libs/TinyClassManager/TinyPluginInliner.d.mts +8 -8
  124. package/dist/v1/libs/TinyClassManager.cjs +5 -7
  125. package/dist/v1/libs/TinyClassManager.d.mts +16 -16
  126. package/dist/v1/libs/TinyClassManager.mjs +5 -6
  127. package/dist/v1/libs/TinyClipboard.cjs +2 -0
  128. package/dist/v1/libs/TinyClipboard.d.mts +12 -5
  129. package/dist/v1/libs/TinyClipboard.mjs +2 -0
  130. package/dist/v1/libs/TinyColorConverter.cjs +1 -0
  131. package/dist/v1/libs/TinyColorConverter.d.mts +10 -32
  132. package/dist/v1/libs/TinyColorConverter.mjs +1 -0
  133. package/dist/v1/libs/TinyColorValidator.d.mts +145 -184
  134. package/dist/v1/libs/TinyCookieConsent.d.mts +17 -17
  135. package/dist/v1/libs/TinyDayNightCycle.cjs +67 -42
  136. package/dist/v1/libs/TinyDayNightCycle.d.mts +87 -117
  137. package/dist/v1/libs/TinyDayNightCycle.mjs +65 -41
  138. package/dist/v1/libs/TinyDomReadyManager.d.mts +8 -16
  139. package/dist/v1/libs/TinyDragDropDetector.cjs +25 -0
  140. package/dist/v1/libs/TinyDragDropDetector.d.mts +32 -26
  141. package/dist/v1/libs/TinyDragDropDetector.mjs +22 -0
  142. package/dist/v1/libs/TinyDragger.cjs +46 -19
  143. package/dist/v1/libs/TinyDragger.d.mts +82 -81
  144. package/dist/v1/libs/TinyDragger.mjs +45 -18
  145. package/dist/v1/libs/TinyElementObserver.cjs +39 -0
  146. package/dist/v1/libs/TinyElementObserver.d.mts +28 -25
  147. package/dist/v1/libs/TinyElementObserver.mjs +36 -0
  148. package/dist/v1/libs/TinyGamepad.cjs +131 -2
  149. package/dist/v1/libs/TinyGamepad.d.mts +50 -122
  150. package/dist/v1/libs/TinyGamepad.mjs +129 -2
  151. package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.cjs +2 -25
  152. package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.d.mts +19 -25
  153. package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.mjs +3 -27
  154. package/dist/v1/libs/TinyHtml/TinyHtmlButton.cjs +2 -1
  155. package/dist/v1/libs/TinyHtml/TinyHtmlButton.d.mts +55 -55
  156. package/dist/v1/libs/TinyHtml/TinyHtmlButton.mjs +2 -1
  157. package/dist/v1/libs/TinyHtml/TinyHtmlCanvas.d.mts +6 -6
  158. package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.cjs +8 -4
  159. package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.d.mts +19 -21
  160. package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.mjs +7 -4
  161. package/dist/v1/libs/TinyHtml/TinyHtmlEmbed.d.mts +8 -8
  162. package/dist/v1/libs/TinyHtml/TinyHtmlForm.d.mts +18 -18
  163. package/dist/v1/libs/TinyHtml/TinyHtmlIcon.d.mts +5 -6
  164. package/dist/v1/libs/TinyHtml/TinyHtmlIframe.d.mts +19 -19
  165. package/dist/v1/libs/TinyHtml/TinyHtmlImage.cjs +0 -28
  166. package/dist/v1/libs/TinyHtml/TinyHtmlImage.d.mts +22 -28
  167. package/dist/v1/libs/TinyHtml/TinyHtmlImage.mjs +1 -27
  168. package/dist/v1/libs/TinyHtml/TinyHtmlInput.d.mts +11 -11
  169. package/dist/v1/libs/TinyHtml/TinyHtmlLink.d.mts +23 -23
  170. package/dist/v1/libs/TinyHtml/TinyHtmlMedia.d.mts +26 -26
  171. package/dist/v1/libs/TinyHtml/TinyHtmlScript.cjs +4 -30
  172. package/dist/v1/libs/TinyHtml/TinyHtmlScript.d.mts +20 -26
  173. package/dist/v1/libs/TinyHtml/TinyHtmlScript.mjs +5 -32
  174. package/dist/v1/libs/TinyHtml/TinyHtmlSelect.d.mts +19 -19
  175. package/dist/v1/libs/TinyHtml/TinyHtmlStyle.d.mts +8 -8
  176. package/dist/v1/libs/TinyHtml/TinyHtmlTemplate.d.mts +26 -28
  177. package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.cjs +14 -15
  178. package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.d.mts +32 -32
  179. package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.mjs +15 -15
  180. package/dist/v1/libs/TinyHtml/index.d.mts +102 -45
  181. package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.cjs +11 -9
  182. package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.d.mts +21 -21
  183. package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.mjs +11 -9
  184. package/dist/v1/libs/TinyHtml/input/TinyHtmlFileInput.d.mts +11 -11
  185. package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.cjs +4 -4
  186. package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.d.mts +17 -13
  187. package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.mjs +4 -4
  188. package/dist/v1/libs/TinyHtml/input/TinyHtmlImageInput.d.mts +21 -21
  189. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.cjs +5 -4
  190. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.d.mts +14 -14
  191. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.mjs +5 -4
  192. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.cjs +4 -3
  193. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.d.mts +10 -10
  194. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.mjs +4 -3
  195. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.cjs +4 -3
  196. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.d.mts +19 -19
  197. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.mjs +4 -3
  198. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.cjs +5 -4
  199. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.d.mts +11 -11
  200. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.mjs +5 -4
  201. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.cjs +4 -3
  202. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.d.mts +15 -11
  203. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.mjs +4 -3
  204. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.cjs +49 -21
  205. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.d.mts +34 -20
  206. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.mjs +45 -20
  207. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.cjs +1 -1
  208. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.d.mts +14 -14
  209. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.mjs +1 -1
  210. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.cjs +1 -1
  211. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.d.mts +14 -14
  212. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.mjs +1 -1
  213. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.cjs +48 -25
  214. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.d.mts +27 -21
  215. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.mjs +40 -27
  216. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.cjs +1 -1
  217. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.d.mts +14 -14
  218. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.mjs +1 -1
  219. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlNumberInput.d.mts +14 -14
  220. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlRangeInput.d.mts +14 -14
  221. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlEmailInput.d.mts +25 -21
  222. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlPasswordInput.d.mts +18 -18
  223. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlSearchInput.d.mts +33 -29
  224. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTelInput.d.mts +22 -22
  225. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTextInput.d.mts +18 -18
  226. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlUrlInput.d.mts +31 -27
  227. package/dist/v1/libs/TinyHtml/media/TinyHtmlAudio.d.mts +35 -11
  228. package/dist/v1/libs/TinyHtml/media/TinyHtmlObject.d.mts +10 -10
  229. package/dist/v1/libs/TinyHtml/media/TinyHtmlSource.d.mts +12 -12
  230. package/dist/v1/libs/TinyHtml/media/TinyHtmlVideo.d.mts +35 -27
  231. package/dist/v1/libs/TinyHtml.cjs +4 -5
  232. package/dist/v1/libs/TinyHtml.d.mts +1503 -1731
  233. package/dist/v1/libs/TinyHtml.mjs +5 -6
  234. package/dist/v1/libs/TinyI18.cjs +61 -0
  235. package/dist/v1/libs/TinyI18.d.mts +34 -58
  236. package/dist/v1/libs/TinyI18.mjs +55 -0
  237. package/dist/v1/libs/TinyIframeEvents.cjs +19 -2
  238. package/dist/v1/libs/TinyIframeEvents.d.mts +29 -38
  239. package/dist/v1/libs/TinyIframeEvents.mjs +19 -2
  240. package/dist/v1/libs/TinyInventory.d.mts +78 -141
  241. package/dist/v1/libs/TinyInventoryTrader.d.mts +19 -22
  242. package/dist/v1/libs/TinyLevelUp.d.mts +10 -13
  243. package/dist/v1/libs/TinyLoadingScreen.d.mts +21 -31
  244. package/dist/v1/libs/TinyLocalStorage.cjs +48 -0
  245. package/dist/v1/libs/TinyLocalStorage.d.mts +11 -30
  246. package/dist/v1/libs/TinyLocalStorage.mjs +45 -0
  247. package/dist/v1/libs/TinyMamdaniInferenceSystem.d.mts +37 -23
  248. package/dist/v1/libs/TinyMediaPlayer.cjs +77 -3
  249. package/dist/v1/libs/TinyMediaPlayer.d.mts +109 -106
  250. package/dist/v1/libs/TinyMediaPlayer.mjs +71 -3
  251. package/dist/v1/libs/TinyNeedBar.d.mts +25 -37
  252. package/dist/v1/libs/TinyNewWinEvents.cjs +29 -0
  253. package/dist/v1/libs/TinyNewWinEvents.d.mts +32 -29
  254. package/dist/v1/libs/TinyNewWinEvents.mjs +26 -0
  255. package/dist/v1/libs/TinyNotifications.d.mts +6 -6
  256. package/dist/v1/libs/TinyNotifyCenter.cjs +36 -0
  257. package/dist/v1/libs/TinyNotifyCenter.d.mts +15 -15
  258. package/dist/v1/libs/TinyNotifyCenter.mjs +32 -0
  259. package/dist/v1/libs/TinyPromiseQueue.d.mts +11 -11
  260. package/dist/v1/libs/TinyRadioFm.cjs +70 -12
  261. package/dist/v1/libs/TinyRadioFm.d.mts +45 -80
  262. package/dist/v1/libs/TinyRadioFm.mjs +64 -12
  263. package/dist/v1/libs/TinyRateLimiter.cjs +52 -0
  264. package/dist/v1/libs/TinyRateLimiter.d.mts +29 -36
  265. package/dist/v1/libs/TinyRateLimiter.mjs +48 -0
  266. package/dist/v1/libs/TinySimpleDice.d.mts +17 -36
  267. package/dist/v1/libs/TinySmartScroller.cjs +52 -3
  268. package/dist/v1/libs/TinySmartScroller.d.mts +62 -70
  269. package/dist/v1/libs/TinySmartScroller.mjs +51 -5
  270. package/dist/v1/libs/TinyTextDiffer.cjs +19 -18
  271. package/dist/v1/libs/TinyTextDiffer.d.mts +11 -13
  272. package/dist/v1/libs/TinyTextDiffer.mjs +16 -17
  273. package/dist/v1/libs/TinyTextRangeEditor.d.mts +8 -8
  274. package/dist/v1/libs/TinyTextarea.cjs +19 -0
  275. package/dist/v1/libs/TinyTextarea.d.mts +34 -28
  276. package/dist/v1/libs/TinyTextarea.mjs +17 -0
  277. package/dist/v1/libs/TinyTimeout.cjs +11 -1
  278. package/dist/v1/libs/TinyTimeout.d.mts +14 -14
  279. package/dist/v1/libs/TinyTimeout.mjs +9 -1
  280. package/dist/v1/libs/TinyToastNotify.cjs +36 -1
  281. package/dist/v1/libs/TinyToastNotify.d.mts +15 -17
  282. package/dist/v1/libs/TinyToastNotify.mjs +32 -1
  283. package/dist/v1/libs/TinyUploadClicker.cjs +19 -0
  284. package/dist/v1/libs/TinyUploadClicker.d.mts +38 -8
  285. package/dist/v1/libs/TinyUploadClicker.mjs +17 -0
  286. package/dist/v1/libs/UltraRandomMsgGen.cjs +148 -35
  287. package/dist/v1/libs/UltraRandomMsgGen.d.mts +52 -78
  288. package/dist/v1/libs/UltraRandomMsgGen.mjs +133 -34
  289. package/dist/v1/libs/utils.cjs +21 -0
  290. package/dist/v1/libs/utils.d.mts +6 -0
  291. package/dist/v1/libs/utils.mjs +16 -0
  292. package/docs/v1/README.md +1 -0
  293. package/docs/v1/basics/array.md +2 -2
  294. package/docs/v1/basics/deprecated/html.md +17 -0
  295. package/docs/v1/basics/fullScreen.md +1 -1
  296. package/docs/v1/basics/html.md +12 -26
  297. package/docs/v1/basics/mediaContent.md +1 -1
  298. package/docs/v1/basics/objChecker.md +1 -1
  299. package/docs/v1/basics/text.md +2 -2
  300. package/docs/v1/fileManager/main.md +1 -1
  301. package/docs/v1/libs/ColorSafeStringify.md +1 -1
  302. package/docs/v1/libs/TinyAfterScrollWatcher.md +1 -1
  303. package/docs/v1/libs/TinyAnalogClock.md +1 -1
  304. package/docs/v1/libs/TinyArrayComparator.md +1 -1
  305. package/docs/v1/libs/TinyArrayPaginator.md +1 -1
  306. package/docs/v1/libs/TinyClassManager/TinyPluginInliner.md +2 -2
  307. package/docs/v1/libs/TinyClassManager.md +1 -1
  308. package/docs/v1/libs/TinyClipboard.md +1 -1
  309. package/docs/v1/libs/TinyCookieConsent.md +1 -1
  310. package/docs/v1/libs/TinyDomReadyManager.md +1 -1
  311. package/docs/v1/libs/TinyDragDropDetector.md +1 -1
  312. package/docs/v1/libs/TinyDragger.md +1 -1
  313. package/docs/v1/libs/TinyElementObserver.md +1 -1
  314. package/docs/v1/libs/TinyHtml.md +1 -1
  315. package/docs/v1/libs/TinyIframeEvents.md +2 -2
  316. package/docs/v1/libs/TinyLevelUp.md +1 -1
  317. package/docs/v1/libs/TinyLoadingScreen.md +1 -1
  318. package/docs/v1/libs/TinyNewWinEvents.md +2 -2
  319. package/docs/v1/libs/TinyNotifications.md +1 -1
  320. package/docs/v1/libs/TinyPromiseQueue.md +2 -2
  321. package/docs/v1/libs/TinyTextDiffer.md +1 -1
  322. package/docs/v1/libs/TinyTextarea.md +1 -1
  323. package/package.json +11 -2
@@ -2,11 +2,15 @@
2
2
 
3
3
  var events = require('events');
4
4
  var mediaContent = require('../basics/mediaContent.cjs');
5
+ var utils = require('./utils.cjs');
6
+
7
+ const checkDestroy = utils.createCheckDestroyed('TinyMediaPlayer');
5
8
 
6
9
  /**
7
- * @typedef {import('../basics/mediaContent.mjs').MediaContent} MediaContent
10
+ * @typedef {import('../basics/mediaContent.mjs').PictureDataType} PictureDataType
11
+ * @typedef {import('../basics/mediaContent.mjs').MediaContent<PictureDataType>} MediaContent
8
12
  * @typedef {import('../basics/mediaContent.mjs').MediaContentBase} MediaContentBase
9
- * @typedef {import('../basics/mediaContent.mjs').MediaContentMetadata} MediaContentMetadata
13
+ * @typedef {import('../basics/mediaContent.mjs').MediaContentMetadata<PictureDataType>} MediaContentMetadata
10
14
  * @typedef {import('../basics/mediaContent.mjs').ParseMediaContentMetadata} ParseMediaContentMetadata
11
15
  * @typedef {import('../basics/mediaContent.mjs').LoadingMediaProgress} LoadingMediaProgress
12
16
  * @typedef {import('../basics/mediaContent.mjs').MediaLoadingErrorData} MediaLoadingErrorData
@@ -14,6 +18,7 @@ var mediaContent = require('../basics/mediaContent.cjs');
14
18
  */
15
19
 
16
20
  /**
21
+ * The loop configuration modes.
17
22
  * @typedef {'NONE' | 'TRACK' | 'PLAYLIST'} LoopModeType
18
23
  */
19
24
 
@@ -160,6 +165,13 @@ class TinyMediaPlayer extends events.EventEmitter {
160
165
  );
161
166
  }
162
167
 
168
+ /** @type {boolean} */
169
+ #destroyed = false;
170
+
171
+ get destroyed() {
172
+ return this.#destroyed;
173
+ }
174
+
163
175
  /** @type {Map<string, BaseMediaAdapter>} */
164
176
  #adapters = new Map();
165
177
 
@@ -289,6 +301,7 @@ class TinyMediaPlayer extends events.EventEmitter {
289
301
 
290
302
  /** @returns {MediaContent[]} A shallow copy of the current playlist. */
291
303
  get playlist() {
304
+ checkDestroy(this.#destroyed);
292
305
  return [...this.#playlist];
293
306
  }
294
307
 
@@ -297,6 +310,7 @@ class TinyMediaPlayer extends events.EventEmitter {
297
310
  * @throws {TypeError} If the value is not an array.
298
311
  */
299
312
  set playlist(value) {
313
+ checkDestroy(this.#destroyed);
300
314
  if (!Array.isArray(value)) {
301
315
  throw new TypeError('Playlist must be an array of MediaContent objects.');
302
316
  }
@@ -343,6 +357,7 @@ class TinyMediaPlayer extends events.EventEmitter {
343
357
 
344
358
  /** @returns {number} The current active index in the playlist. */
345
359
  get currentIndex() {
360
+ checkDestroy(this.#destroyed);
346
361
  return this.#currentIndex;
347
362
  }
348
363
 
@@ -352,6 +367,7 @@ class TinyMediaPlayer extends events.EventEmitter {
352
367
  * @throws {RangeError} If the index is out of the playlist bounds (unless -1 for empty).
353
368
  */
354
369
  set currentIndex(value) {
370
+ checkDestroy(this.#destroyed);
355
371
  if (typeof value !== 'number') {
356
372
  throw new TypeError('Current index must be a number.');
357
373
  }
@@ -390,6 +406,7 @@ class TinyMediaPlayer extends events.EventEmitter {
390
406
 
391
407
  /** @returns {LoopModeType} The current loop configuration. */
392
408
  get loopMode() {
409
+ checkDestroy(this.#destroyed);
393
410
  return this.#loopMode;
394
411
  }
395
412
 
@@ -398,6 +415,7 @@ class TinyMediaPlayer extends events.EventEmitter {
398
415
  * @throws {TypeError} If the value is not a valid LoopModeType.
399
416
  */
400
417
  set loopMode(value) {
418
+ checkDestroy(this.#destroyed);
401
419
  const validModes = ['NONE', 'TRACK', 'PLAYLIST'];
402
420
  if (!validModes.includes(value)) {
403
421
  throw new TypeError(`Loop mode must be one of: ${validModes.join(', ')}.`);
@@ -408,6 +426,7 @@ class TinyMediaPlayer extends events.EventEmitter {
408
426
 
409
427
  /** @returns {boolean} The current random mode status. */
410
428
  get isRandom() {
429
+ checkDestroy(this.#destroyed);
411
430
  return this.#isRandom;
412
431
  }
413
432
 
@@ -416,6 +435,7 @@ class TinyMediaPlayer extends events.EventEmitter {
416
435
  * @throws {TypeError} If the value is not a boolean.
417
436
  */
418
437
  set isRandom(value) {
438
+ checkDestroy(this.#destroyed);
419
439
  if (typeof value !== 'boolean') {
420
440
  throw new TypeError('Random mode state must be a boolean.');
421
441
  }
@@ -425,11 +445,13 @@ class TinyMediaPlayer extends events.EventEmitter {
425
445
 
426
446
  /** @returns {boolean} True if media is actively playing. */
427
447
  get isPlaying() {
448
+ checkDestroy(this.#destroyed);
428
449
  return this.#isPlaying;
429
450
  }
430
451
 
431
452
  /** @returns {number} The current volume level (0.0 to 1.0). */
432
453
  get volume() {
454
+ checkDestroy(this.#destroyed);
433
455
  return this.#volume;
434
456
  }
435
457
 
@@ -439,6 +461,7 @@ class TinyMediaPlayer extends events.EventEmitter {
439
461
  * @throws {RangeError} If the value is outside the 0.0 to 1.0 range.
440
462
  */
441
463
  set volume(value) {
464
+ checkDestroy(this.#destroyed);
442
465
  if (typeof value !== 'number') throw new TypeError('Volume must be a number.');
443
466
  if (value < 0 || value > 1)
444
467
  throw new RangeError('Volume must be tightly constrained between 0.0 and 1.0.');
@@ -460,6 +483,7 @@ class TinyMediaPlayer extends events.EventEmitter {
460
483
 
461
484
  /** @returns {boolean} Whether the volume cache is currently enabled. */
462
485
  get persistVolume() {
486
+ checkDestroy(this.#destroyed);
463
487
  return this.#persistVolume;
464
488
  }
465
489
 
@@ -468,6 +492,7 @@ class TinyMediaPlayer extends events.EventEmitter {
468
492
  * @throws {TypeError} If the value is not a boolean.
469
493
  */
470
494
  set persistVolume(value) {
495
+ checkDestroy(this.#destroyed);
471
496
  if (typeof value !== 'boolean') {
472
497
  throw new TypeError('Persist volume parameter must be a boolean.');
473
498
  }
@@ -479,6 +504,7 @@ class TinyMediaPlayer extends events.EventEmitter {
479
504
 
480
505
  /** @returns {string} The localStorage key used for volume caching. */
481
506
  get volumeStorageKey() {
507
+ checkDestroy(this.#destroyed);
482
508
  return this.#volumeStorageKey;
483
509
  }
484
510
 
@@ -487,6 +513,7 @@ class TinyMediaPlayer extends events.EventEmitter {
487
513
  * @throws {TypeError} If the value is not a string or is empty.
488
514
  */
489
515
  set volumeStorageKey(value) {
516
+ checkDestroy(this.#destroyed);
490
517
  if (typeof value !== 'string') {
491
518
  throw new TypeError('Volume storage key must be a string.');
492
519
  }
@@ -519,6 +546,7 @@ class TinyMediaPlayer extends events.EventEmitter {
519
546
  * @throws {TypeError} If id is not a string or adapter is invalid.
520
547
  */
521
548
  registerAdapter(id, adapter) {
549
+ checkDestroy(this.#destroyed);
522
550
  if (typeof id !== 'string') {
523
551
  throw new TypeError('Adapter ID must be a string.');
524
552
  }
@@ -556,6 +584,7 @@ class TinyMediaPlayer extends events.EventEmitter {
556
584
  * @throws {TypeError} If content is invalid or missing required base properties.
557
585
  */
558
586
  addTrack(content) {
587
+ checkDestroy(this.#destroyed);
559
588
  if (!content || typeof content !== 'object' || typeof content.url !== 'string')
560
589
  throw new TypeError('Track content must be a valid MediaContent object containing a URL.');
561
590
 
@@ -579,6 +608,7 @@ class TinyMediaPlayer extends events.EventEmitter {
579
608
  * @throws {TypeError} If the index is not a number.
580
609
  */
581
610
  existsTrack(index) {
611
+ checkDestroy(this.#destroyed);
582
612
  if (typeof index !== 'number') {
583
613
  throw new TypeError('Index must be a number.');
584
614
  }
@@ -593,6 +623,7 @@ class TinyMediaPlayer extends events.EventEmitter {
593
623
  * @throws {RangeError} If the index is out of bounds.
594
624
  */
595
625
  getTrack(index) {
626
+ checkDestroy(this.#destroyed);
596
627
  if (typeof index !== 'number') {
597
628
  throw new TypeError('Index must be a number.');
598
629
  }
@@ -610,6 +641,7 @@ class TinyMediaPlayer extends events.EventEmitter {
610
641
  * @throws {RangeError} If the index is out of bounds.
611
642
  */
612
643
  async removeTrack(index) {
644
+ checkDestroy(this.#destroyed);
613
645
  if (typeof index !== 'number') {
614
646
  throw new TypeError('Index must be a number.');
615
647
  }
@@ -643,11 +675,12 @@ class TinyMediaPlayer extends events.EventEmitter {
643
675
 
644
676
  /**
645
677
  * Searches the playlist for tracks matching a string query or a custom evaluation function.
646
- * @param {string | function(MediaContent): boolean} query - The search string (checked against title, artist, album) or a callback returning a boolean.
678
+ * @param {string | ((content: MediaContent) => boolean)} query - The search string (checked against title, artist, album) or a callback returning a boolean.
647
679
  * @returns {SearchResult[]} An array containing the matched tracks and their corresponding indices.
648
680
  * @throws {TypeError} If the query is neither a string nor a function.
649
681
  */
650
682
  searchTrack(query) {
683
+ checkDestroy(this.#destroyed);
651
684
  if (typeof query !== 'string' && typeof query !== 'function') {
652
685
  throw new TypeError('Search query must be a string or a boolean evaluation function.');
653
686
  }
@@ -681,6 +714,7 @@ class TinyMediaPlayer extends events.EventEmitter {
681
714
  * Clears the entire playlist and stops playback.
682
715
  */
683
716
  async clearPlaylist() {
717
+ checkDestroy(this.#destroyed);
684
718
  await this.stop();
685
719
  this.#playlist = [];
686
720
  this.#currentIndex = -1;
@@ -697,6 +731,7 @@ class TinyMediaPlayer extends events.EventEmitter {
697
731
  * @returns {Promise<void>}
698
732
  */
699
733
  async play() {
734
+ checkDestroy(this.#destroyed);
700
735
  const adapter = this.#getActiveAdapter();
701
736
  if (!adapter) return;
702
737
 
@@ -712,6 +747,7 @@ class TinyMediaPlayer extends events.EventEmitter {
712
747
  * @returns {Promise<void>}
713
748
  */
714
749
  async pause() {
750
+ checkDestroy(this.#destroyed);
715
751
  const adapter = this.#getActiveAdapter();
716
752
  if (!adapter) return;
717
753
 
@@ -725,6 +761,7 @@ class TinyMediaPlayer extends events.EventEmitter {
725
761
  * @returns {Promise<void>}
726
762
  */
727
763
  async stop() {
764
+ checkDestroy(this.#destroyed);
728
765
  const adapter = this.#getActiveAdapter();
729
766
  if (!adapter) return;
730
767
 
@@ -738,6 +775,7 @@ class TinyMediaPlayer extends events.EventEmitter {
738
775
  * @returns {Promise<void>}
739
776
  */
740
777
  async next() {
778
+ checkDestroy(this.#destroyed);
741
779
  if (this.#playlist.length === 0) return;
742
780
 
743
781
  await this.stop();
@@ -772,6 +810,7 @@ class TinyMediaPlayer extends events.EventEmitter {
772
810
  * @returns {Promise<void>}
773
811
  */
774
812
  async prev() {
813
+ checkDestroy(this.#destroyed);
775
814
  if (this.#playlist.length === 0) return;
776
815
 
777
816
  await this.stop();
@@ -803,6 +842,7 @@ class TinyMediaPlayer extends events.EventEmitter {
803
842
  * @returns {Promise<void>}
804
843
  */
805
844
  async seek(timeMs) {
845
+ checkDestroy(this.#destroyed);
806
846
  if (typeof timeMs !== 'number') {
807
847
  throw new TypeError('Seek time must be a number in milliseconds.');
808
848
  }
@@ -824,6 +864,7 @@ class TinyMediaPlayer extends events.EventEmitter {
824
864
  * @returns {Promise<void>}
825
865
  */
826
866
  async step(stepMs) {
867
+ checkDestroy(this.#destroyed);
827
868
  if (typeof stepMs !== 'number') {
828
869
  throw new TypeError('Step amount must be a number in milliseconds.');
829
870
  }
@@ -839,6 +880,39 @@ class TinyMediaPlayer extends events.EventEmitter {
839
880
 
840
881
  await this.seek(targetTime);
841
882
  }
883
+
884
+ /**
885
+ * Safely destroys the TinyMediaPlayer instance.
886
+ * This method stops active playback, clears the internal playlist,
887
+ * removes all registered media adapters, and detaches all event listeners
888
+ * to ensure proper garbage collection and prevent memory leaks.
889
+ *
890
+ * @returns {Promise<void>} A promise that resolves when the destruction sequence is complete.
891
+ */
892
+ async destroy() {
893
+ if (this.#destroyed) return;
894
+
895
+ // 1. Stop current playback if active to halt media processes
896
+ try {
897
+ if (this.#isPlaying) {
898
+ await this.stop();
899
+ }
900
+ } catch (error) {
901
+ console.warn('[TinyMediaPlayer] Non-fatal error during playback termination:', error);
902
+ }
903
+
904
+ // 2. Clear internal state variables
905
+ this.#playlist = [];
906
+ this.#currentIndex = -1;
907
+ this.#isPlaying = false;
908
+
909
+ // 3. Clear all registered API adapters
910
+ this.#adapters.clear();
911
+
912
+ // 4. Remove all event listeners inherited from EventEmitter
913
+ this.removeAllListeners();
914
+ this.#destroyed = true;
915
+ }
842
916
  }
843
917
 
844
918
  module.exports = TinyMediaPlayer;
@@ -1,28 +1,90 @@
1
- export default TinyMediaPlayer;
2
- export type MediaContent = import("../basics/mediaContent.mjs").MediaContent;
3
- export type MediaContentBase = import("../basics/mediaContent.mjs").MediaContentBase;
4
- export type MediaContentMetadata = import("../basics/mediaContent.mjs").MediaContentMetadata;
5
- export type ParseMediaContentMetadata = import("../basics/mediaContent.mjs").ParseMediaContentMetadata;
6
- export type LoadingMediaProgress = import("../basics/mediaContent.mjs").LoadingMediaProgress;
7
- export type MediaLoadingErrorData = import("../basics/mediaContent.mjs").MediaLoadingErrorData;
8
- export type UnknownArtistGetter = import("../basics/mediaContent.mjs").UnknownArtistGetter;
9
- export type LoopModeType = "NONE" | "TRACK" | "PLAYLIST";
10
- /**
11
- * Configuration options for initializing the UniversalMediaPlayer.
12
- */
1
+ import { EventEmitter } from 'events';
2
+ export type PictureDataType = import('../basics/mediaContent.mjs').PictureDataType;
3
+ export type MediaContent = import('../basics/mediaContent.mjs').MediaContent<PictureDataType>;
4
+ export type MediaContentBase = import('../basics/mediaContent.mjs').MediaContentBase;
5
+ export type MediaContentMetadata = import('../basics/mediaContent.mjs').MediaContentMetadata<PictureDataType>;
6
+ export type ParseMediaContentMetadata = import('../basics/mediaContent.mjs').ParseMediaContentMetadata;
7
+ export type LoadingMediaProgress = import('../basics/mediaContent.mjs').LoadingMediaProgress;
8
+ export type MediaLoadingErrorData = import('../basics/mediaContent.mjs').MediaLoadingErrorData;
9
+ export type UnknownArtistGetter = import('../basics/mediaContent.mjs').UnknownArtistGetter;
10
+ export type LoopModeType = 'NONE' | 'TRACK' | 'PLAYLIST';
13
11
  export type TinyMediaPlayerOptions = {
14
12
  /**
15
13
  * - Whether to automatically save the volume in localStorage.
16
14
  */
17
- persistVolume?: boolean | undefined;
15
+ persistVolume?: boolean;
18
16
  /**
19
17
  * - The specific key name used for localStorage cache.
20
18
  */
21
- volumeStorageKey?: string | undefined;
19
+ volumeStorageKey?: string;
22
20
  };
23
21
  /**
24
- * Represents a search match containing the media object and its exact playlist index.
22
+ * @typedef {import('../basics/mediaContent.mjs').PictureDataType} PictureDataType
23
+ * @typedef {import('../basics/mediaContent.mjs').MediaContent<PictureDataType>} MediaContent
24
+ * @typedef {import('../basics/mediaContent.mjs').MediaContentBase} MediaContentBase
25
+ * @typedef {import('../basics/mediaContent.mjs').MediaContentMetadata<PictureDataType>} MediaContentMetadata
26
+ * @typedef {import('../basics/mediaContent.mjs').ParseMediaContentMetadata} ParseMediaContentMetadata
27
+ * @typedef {import('../basics/mediaContent.mjs').LoadingMediaProgress} LoadingMediaProgress
28
+ * @typedef {import('../basics/mediaContent.mjs').MediaLoadingErrorData} MediaLoadingErrorData
29
+ * @typedef {import('../basics/mediaContent.mjs').UnknownArtistGetter} UnknownArtistGetter
30
+ */
31
+ /**
32
+ * The loop configuration modes.
33
+ * @typedef {'NONE' | 'TRACK' | 'PLAYLIST'} LoopModeType
34
+ */
35
+ /**
36
+ * Configuration options for initializing the UniversalMediaPlayer.
37
+ * @typedef {Object} TinyMediaPlayerOptions
38
+ * @property {boolean} [persistVolume=false] - Whether to automatically save the volume in localStorage.
39
+ * @property {string} [volumeStorageKey='universal_media_player_volume'] - The specific key name used for localStorage cache.
40
+ */
41
+ /**
42
+ * Interface definition for a Media Provider Adapter.
43
+ * All specific API wrappers must extend and implement this class.
44
+ * @abstract
25
45
  */
46
+ declare class BaseMediaAdapter {
47
+ constructor();
48
+ /**
49
+ * Determines if this adapter can play the provided content.
50
+ * @param {MediaContent} content - The media content to evaluate.
51
+ * @returns {boolean} True if the adapter can handle the content, false otherwise.
52
+ */
53
+ canHandle(content: MediaContent): boolean;
54
+ /**
55
+ * Starts or resumes playback of the provided content.
56
+ * @param {MediaContent} content - The media content to play.
57
+ * @returns {Promise<void>}
58
+ */
59
+ play(content: MediaContent): Promise<void>;
60
+ /**
61
+ * Pauses the current playback.
62
+ * @returns {Promise<void>}
63
+ */
64
+ pause(): Promise<void>;
65
+ /**
66
+ * Stops the playback completely and resets the internal platform state.
67
+ * @returns {Promise<void>}
68
+ */
69
+ stop(): Promise<void>;
70
+ /**
71
+ * Seeks to a specific time in the media timeline.
72
+ * @param {number} timeMs - The target time in milliseconds.
73
+ * @returns {Promise<void>}
74
+ */
75
+ seek(timeMs: number): Promise<void>;
76
+ /**
77
+ * Retrieves the current playback time from the underlying API.
78
+ * @returns {number} The current time in milliseconds.
79
+ */
80
+ getCurrentTime(): number;
81
+ /**
82
+ * Sets the playback volume for the underlying API.
83
+ * @param {number} volume - The volume level from 0.0 to 1.0.
84
+ * @returns {void}
85
+ */
86
+ setVolume(volume: number): void;
87
+ }
26
88
  export type SearchResult = {
27
89
  /**
28
90
  * - The matched media content.
@@ -42,24 +104,20 @@ export type SearchResult = {
42
104
  /**
43
105
  * A universal media player manager capable of orchestrating multiple API adapters.
44
106
  */
45
- declare class TinyMediaPlayer extends EventEmitter<any> {
107
+ declare class TinyMediaPlayer extends EventEmitter {
108
+ #private;
46
109
  static BaseMediaAdapter: typeof BaseMediaAdapter;
47
110
  /**
48
- * @type {UnknownArtistGetter}
49
- * The default identifier or function used when an artist cannot be determined.
111
+ * Gets the current value used to represent unknown artists.
112
+ * @returns {UnknownArtistGetter}
50
113
  */
51
- static #unknownArtist: UnknownArtistGetter;
114
+ static get unknownArtist(): UnknownArtistGetter;
52
115
  /**
53
116
  * Sets the value used to represent unknown artists.
54
117
  * @param {UnknownArtistGetter} value - A string or a function that returns a string.
55
118
  * @throws {TypeError} If the value is neither a string nor a function.
56
119
  */
57
120
  static set unknownArtist(value: UnknownArtistGetter);
58
- /**
59
- * Gets the current value used to represent unknown artists.
60
- * @returns {UnknownArtistGetter}
61
- */
62
- static get unknownArtist(): UnknownArtistGetter;
63
121
  /**
64
122
  * A Static Factory Method that prepares a MediaContent object by
65
123
  * extracting metadata from an audio source.
@@ -81,9 +139,10 @@ declare class TinyMediaPlayer extends EventEmitter<any> {
81
139
  id?: string;
82
140
  weight?: number;
83
141
  }, parseFile?: ParseMediaContentMetadata, callbacks?: {
84
- onProgress?: ((progress: LoadingMediaProgress) => void) | undefined;
85
- onError?: ((error: MediaLoadingErrorData) => void) | undefined;
142
+ onProgress?: (progress: LoadingMediaProgress) => void;
143
+ onError?: (error: MediaLoadingErrorData) => void;
86
144
  }): Promise<MediaContent>;
145
+ get destroyed(): boolean;
87
146
  /**
88
147
  * @param {TinyMediaPlayerOptions} [options={}] - Configuration parameters for the player.
89
148
  */
@@ -95,59 +154,59 @@ declare class TinyMediaPlayer extends EventEmitter<any> {
95
154
  * @private
96
155
  */
97
156
  private _getWeightedRandomIndex;
157
+ /** @returns {MediaContent[]} A shallow copy of the current playlist. */
158
+ get playlist(): MediaContent[];
98
159
  /**
99
160
  * @param {MediaContent[]} value - The new playlist array.
100
161
  * @throws {TypeError} If the value is not an array.
101
162
  */
102
163
  set playlist(value: MediaContent[]);
103
- /** @returns {MediaContent[]} A shallow copy of the current playlist. */
104
- get playlist(): MediaContent[];
164
+ /** @returns {number} The current active index in the playlist. */
165
+ get currentIndex(): number;
105
166
  /**
106
167
  * @param {number} value - The index to set as current.
107
168
  * @throws {TypeError} If the value is not a number.
108
169
  * @throws {RangeError} If the index is out of the playlist bounds (unless -1 for empty).
109
170
  */
110
171
  set currentIndex(value: number);
111
- /** @returns {number} The current active index in the playlist. */
112
- get currentIndex(): number;
172
+ /** @returns {LoopModeType} The current loop configuration. */
173
+ get loopMode(): LoopModeType;
113
174
  /**
114
175
  * @param {LoopModeType} value - The desired loop mode.
115
176
  * @throws {TypeError} If the value is not a valid LoopModeType.
116
177
  */
117
178
  set loopMode(value: LoopModeType);
118
- /** @returns {LoopModeType} The current loop configuration. */
119
- get loopMode(): LoopModeType;
179
+ /** @returns {boolean} The current random mode status. */
180
+ get isRandom(): boolean;
120
181
  /**
121
182
  * @param {boolean} value - True to enable random playback, false otherwise.
122
183
  * @throws {TypeError} If the value is not a boolean.
123
184
  */
124
185
  set isRandom(value: boolean);
125
- /** @returns {boolean} The current random mode status. */
126
- get isRandom(): boolean;
127
186
  /** @returns {boolean} True if media is actively playing. */
128
187
  get isPlaying(): boolean;
188
+ /** @returns {number} The current volume level (0.0 to 1.0). */
189
+ get volume(): number;
129
190
  /**
130
191
  * @param {number} value - The volume level to set.
131
192
  * @throws {TypeError} If the value is not a number.
132
193
  * @throws {RangeError} If the value is outside the 0.0 to 1.0 range.
133
194
  */
134
195
  set volume(value: number);
135
- /** @returns {number} The current volume level (0.0 to 1.0). */
136
- get volume(): number;
196
+ /** @returns {boolean} Whether the volume cache is currently enabled. */
197
+ get persistVolume(): boolean;
137
198
  /**
138
199
  * @param {boolean} value - True to save volume dynamically to localStorage.
139
200
  * @throws {TypeError} If the value is not a boolean.
140
201
  */
141
202
  set persistVolume(value: boolean);
142
- /** @returns {boolean} Whether the volume cache is currently enabled. */
143
- get persistVolume(): boolean;
203
+ /** @returns {string} The localStorage key used for volume caching. */
204
+ get volumeStorageKey(): string;
144
205
  /**
145
206
  * @param {string} value - The custom storage key string.
146
207
  * @throws {TypeError} If the value is not a string or is empty.
147
208
  */
148
209
  set volumeStorageKey(value: string);
149
- /** @returns {string} The localStorage key used for volume caching. */
150
- get volumeStorageKey(): string;
151
210
  /**
152
211
  * Registers a new media API adapter.
153
212
  * @param {string} id - Unique identifier for the platform (e.g., 'youtube', 'spotify').
@@ -187,11 +246,11 @@ declare class TinyMediaPlayer extends EventEmitter<any> {
187
246
  removeTrack(index: number): Promise<void>;
188
247
  /**
189
248
  * Searches the playlist for tracks matching a string query or a custom evaluation function.
190
- * @param {string | function(MediaContent): boolean} query - The search string (checked against title, artist, album) or a callback returning a boolean.
249
+ * @param {string | ((content: MediaContent) => boolean)} query - The search string (checked against title, artist, album) or a callback returning a boolean.
191
250
  * @returns {SearchResult[]} An array containing the matched tracks and their corresponding indices.
192
251
  * @throws {TypeError} If the query is neither a string nor a function.
193
252
  */
194
- searchTrack(query: string | ((arg0: MediaContent) => boolean)): SearchResult[];
253
+ searchTrack(query: string | ((content: MediaContent) => boolean)): SearchResult[];
195
254
  /**
196
255
  * Clears the entire playlist and stops playback.
197
256
  */
@@ -236,71 +295,15 @@ declare class TinyMediaPlayer extends EventEmitter<any> {
236
295
  * @returns {Promise<void>}
237
296
  */
238
297
  step(stepMs: number): Promise<void>;
239
- #private;
240
- }
241
- import { EventEmitter } from 'events';
242
- /**
243
- * @typedef {import('../basics/mediaContent.mjs').MediaContent} MediaContent
244
- * @typedef {import('../basics/mediaContent.mjs').MediaContentBase} MediaContentBase
245
- * @typedef {import('../basics/mediaContent.mjs').MediaContentMetadata} MediaContentMetadata
246
- * @typedef {import('../basics/mediaContent.mjs').ParseMediaContentMetadata} ParseMediaContentMetadata
247
- * @typedef {import('../basics/mediaContent.mjs').LoadingMediaProgress} LoadingMediaProgress
248
- * @typedef {import('../basics/mediaContent.mjs').MediaLoadingErrorData} MediaLoadingErrorData
249
- * @typedef {import('../basics/mediaContent.mjs').UnknownArtistGetter} UnknownArtistGetter
250
- */
251
- /**
252
- * @typedef {'NONE' | 'TRACK' | 'PLAYLIST'} LoopModeType
253
- */
254
- /**
255
- * Configuration options for initializing the UniversalMediaPlayer.
256
- * @typedef {Object} TinyMediaPlayerOptions
257
- * @property {boolean} [persistVolume=false] - Whether to automatically save the volume in localStorage.
258
- * @property {string} [volumeStorageKey='universal_media_player_volume'] - The specific key name used for localStorage cache.
259
- */
260
- /**
261
- * Interface definition for a Media Provider Adapter.
262
- * All specific API wrappers must extend and implement this class.
263
- * @abstract
264
- */
265
- declare class BaseMediaAdapter {
266
298
  /**
267
- * Determines if this adapter can play the provided content.
268
- * @param {MediaContent} content - The media content to evaluate.
269
- * @returns {boolean} True if the adapter can handle the content, false otherwise.
270
- */
271
- canHandle(content: MediaContent): boolean;
272
- /**
273
- * Starts or resumes playback of the provided content.
274
- * @param {MediaContent} content - The media content to play.
275
- * @returns {Promise<void>}
276
- */
277
- play(content: MediaContent): Promise<void>;
278
- /**
279
- * Pauses the current playback.
280
- * @returns {Promise<void>}
281
- */
282
- pause(): Promise<void>;
283
- /**
284
- * Stops the playback completely and resets the internal platform state.
285
- * @returns {Promise<void>}
286
- */
287
- stop(): Promise<void>;
288
- /**
289
- * Seeks to a specific time in the media timeline.
290
- * @param {number} timeMs - The target time in milliseconds.
291
- * @returns {Promise<void>}
292
- */
293
- seek(timeMs: number): Promise<void>;
294
- /**
295
- * Retrieves the current playback time from the underlying API.
296
- * @returns {number} The current time in milliseconds.
297
- */
298
- getCurrentTime(): number;
299
- /**
300
- * Sets the playback volume for the underlying API.
301
- * @param {number} volume - The volume level from 0.0 to 1.0.
302
- * @returns {void}
299
+ * Safely destroys the TinyMediaPlayer instance.
300
+ * This method stops active playback, clears the internal playlist,
301
+ * removes all registered media adapters, and detaches all event listeners
302
+ * to ensure proper garbage collection and prevent memory leaks.
303
+ *
304
+ * @returns {Promise<void>} A promise that resolves when the destruction sequence is complete.
303
305
  */
304
- setVolume(volume: number): void;
306
+ destroy(): Promise<void>;
305
307
  }
308
+ export default TinyMediaPlayer;
306
309
  //# sourceMappingURL=TinyMediaPlayer.d.mts.map