@herowcode/utils 1.3.5 → 1.4.8

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 (456) hide show
  1. package/dist/api/index.cjs +12 -0
  2. package/dist/api/index.cjs.map +1 -0
  3. package/dist/api/{client.d.ts → index.d.mts} +19 -8
  4. package/dist/api/index.d.ts +36 -3
  5. package/dist/api/index.js +3 -0
  6. package/dist/api/index.js.map +1 -0
  7. package/dist/array/index.cjs +16 -0
  8. package/dist/array/index.cjs.map +1 -0
  9. package/dist/array/index.d.mts +5 -0
  10. package/dist/array/index.d.ts +5 -3
  11. package/dist/array/index.js +3 -0
  12. package/dist/array/index.js.map +1 -0
  13. package/dist/chunk-2MANLCNG.cjs +23 -0
  14. package/dist/chunk-2MANLCNG.cjs.map +1 -0
  15. package/dist/chunk-2RTW37WD.js +20 -0
  16. package/dist/chunk-2RTW37WD.js.map +1 -0
  17. package/dist/chunk-2Y6M7IOG.js +250 -0
  18. package/dist/chunk-2Y6M7IOG.js.map +1 -0
  19. package/dist/chunk-3JUB2OJL.js +3 -0
  20. package/dist/chunk-3JUB2OJL.js.map +1 -0
  21. package/dist/chunk-53JMVGIG.js +187 -0
  22. package/dist/chunk-53JMVGIG.js.map +1 -0
  23. package/dist/chunk-56NHIM5J.js +151 -0
  24. package/dist/chunk-56NHIM5J.js.map +1 -0
  25. package/dist/chunk-5OLQJUNS.js +66 -0
  26. package/dist/chunk-5OLQJUNS.js.map +1 -0
  27. package/dist/chunk-5YOEKMTJ.cjs +321 -0
  28. package/dist/chunk-5YOEKMTJ.cjs.map +1 -0
  29. package/dist/chunk-6TWPZ6LL.cjs +4 -0
  30. package/dist/chunk-6TWPZ6LL.cjs.map +1 -0
  31. package/dist/chunk-AQZBHMTO.js +96 -0
  32. package/dist/chunk-AQZBHMTO.js.map +1 -0
  33. package/dist/chunk-ATWN4SRX.js +29 -0
  34. package/dist/chunk-ATWN4SRX.js.map +1 -0
  35. package/dist/chunk-GRSF4RY2.cjs +20 -0
  36. package/dist/chunk-GRSF4RY2.cjs.map +1 -0
  37. package/dist/chunk-GX5E5B4L.cjs +70 -0
  38. package/dist/chunk-GX5E5B4L.cjs.map +1 -0
  39. package/dist/chunk-HK727IAV.cjs +201 -0
  40. package/dist/chunk-HK727IAV.cjs.map +1 -0
  41. package/dist/chunk-LJ6KOZD4.cjs +154 -0
  42. package/dist/chunk-LJ6KOZD4.cjs.map +1 -0
  43. package/dist/chunk-N2DRAZ3A.cjs +29 -0
  44. package/dist/chunk-N2DRAZ3A.cjs.map +1 -0
  45. package/dist/chunk-O7SH3E3T.js +18 -0
  46. package/dist/chunk-O7SH3E3T.js.map +1 -0
  47. package/dist/chunk-P5YNRND6.cjs +4 -0
  48. package/dist/chunk-P5YNRND6.cjs.map +1 -0
  49. package/dist/chunk-QAE6Q2SA.js +317 -0
  50. package/dist/chunk-QAE6Q2SA.js.map +1 -0
  51. package/dist/chunk-QRXVUXGJ.js +378 -0
  52. package/dist/chunk-QRXVUXGJ.js.map +1 -0
  53. package/dist/chunk-SLYUARZG.cjs +99 -0
  54. package/dist/chunk-SLYUARZG.cjs.map +1 -0
  55. package/dist/chunk-SWRIT7EE.js +3 -0
  56. package/dist/chunk-SWRIT7EE.js.map +1 -0
  57. package/dist/chunk-UXEUYHBD.cjs +401 -0
  58. package/dist/chunk-UXEUYHBD.cjs.map +1 -0
  59. package/dist/chunk-V6OKXUBQ.js +22 -0
  60. package/dist/chunk-V6OKXUBQ.js.map +1 -0
  61. package/dist/chunk-VAZJXZU5.cjs +31 -0
  62. package/dist/chunk-VAZJXZU5.cjs.map +1 -0
  63. package/dist/chunk-WGSFRFRO.cjs +252 -0
  64. package/dist/chunk-WGSFRFRO.cjs.map +1 -0
  65. package/dist/date/index.cjs +56 -0
  66. package/dist/date/index.cjs.map +1 -0
  67. package/dist/date/index.d.mts +63 -0
  68. package/dist/date/index.d.ts +63 -8
  69. package/dist/date/index.js +3 -0
  70. package/dist/date/index.js.map +1 -0
  71. package/dist/extract-youtube-video-id-HSYMYXIZ.js +3 -0
  72. package/dist/extract-youtube-video-id-HSYMYXIZ.js.map +1 -0
  73. package/dist/extract-youtube-video-id-XVGNPUDX.cjs +12 -0
  74. package/dist/extract-youtube-video-id-XVGNPUDX.cjs.map +1 -0
  75. package/dist/files/index.browser.cjs +21 -0
  76. package/dist/files/index.browser.cjs.map +1 -0
  77. package/dist/files/index.browser.d.mts +14 -0
  78. package/dist/files/index.browser.d.ts +14 -0
  79. package/dist/files/index.browser.js +4 -0
  80. package/dist/files/index.browser.js.map +1 -0
  81. package/dist/files/index.cjs +31 -0
  82. package/dist/files/index.cjs.map +1 -0
  83. package/dist/files/index.d.mts +3 -0
  84. package/dist/files/index.d.ts +3 -6
  85. package/dist/files/index.js +6 -0
  86. package/dist/files/index.js.map +1 -0
  87. package/dist/files/index.node.cjs +21 -0
  88. package/dist/files/index.node.cjs.map +1 -0
  89. package/dist/files/index.node.d.mts +7 -0
  90. package/dist/files/index.node.d.ts +7 -0
  91. package/dist/files/index.node.js +4 -0
  92. package/dist/files/index.node.js.map +1 -0
  93. package/dist/format-bytes-BGjeDnvM.d.mts +3 -0
  94. package/dist/format-bytes-BGjeDnvM.d.ts +3 -0
  95. package/dist/function/index.cjs +20 -0
  96. package/dist/function/index.cjs.map +1 -0
  97. package/dist/function/index.d.mts +22 -0
  98. package/dist/function/index.d.ts +22 -4
  99. package/dist/function/index.js +3 -0
  100. package/dist/function/index.js.map +1 -0
  101. package/dist/index.cjs +188 -0
  102. package/dist/index.cjs.map +1 -0
  103. package/dist/index.d.mts +12 -0
  104. package/dist/index.d.ts +12 -8
  105. package/dist/index.js +15 -0
  106. package/dist/index.js.map +1 -0
  107. package/dist/string/index.cjs +60 -0
  108. package/dist/string/index.cjs.map +1 -0
  109. package/dist/string/index.d.mts +28 -0
  110. package/dist/string/index.d.ts +28 -14
  111. package/dist/string/index.js +3 -0
  112. package/dist/string/index.js.map +1 -0
  113. package/dist/{cjs/function/try-catch.d.ts → try-catch-B7WzqcPU.d.mts} +4 -4
  114. package/dist/{function/try-catch.d.ts → try-catch-B7WzqcPU.d.ts} +4 -4
  115. package/dist/youtube/index.browser.cjs +35 -0
  116. package/dist/youtube/index.browser.cjs.map +1 -0
  117. package/dist/youtube/index.browser.d.mts +2 -0
  118. package/dist/youtube/index.browser.d.ts +2 -0
  119. package/dist/youtube/index.browser.js +6 -0
  120. package/dist/youtube/index.browser.js.map +1 -0
  121. package/dist/youtube/index.cjs +36 -0
  122. package/dist/youtube/index.cjs.map +1 -0
  123. package/dist/youtube/index.d.mts +12 -0
  124. package/dist/youtube/index.d.ts +12 -7
  125. package/dist/youtube/index.js +7 -0
  126. package/dist/youtube/index.js.map +1 -0
  127. package/dist/youtube/index.node.cjs +26 -0
  128. package/dist/youtube/index.node.cjs.map +1 -0
  129. package/dist/youtube/index.node.d.mts +49 -0
  130. package/dist/youtube/index.node.d.ts +49 -0
  131. package/dist/youtube/index.node.js +5 -0
  132. package/dist/youtube/index.node.js.map +1 -0
  133. package/package.json +134 -47
  134. package/dist/api/client.d.ts.map +0 -1
  135. package/dist/api/index.d.ts.map +0 -1
  136. package/dist/api/wrapper.d.ts +0 -27
  137. package/dist/api/wrapper.d.ts.map +0 -1
  138. package/dist/array/index.d.ts.map +0 -1
  139. package/dist/array/shuffle.d.ts +0 -2
  140. package/dist/array/shuffle.d.ts.map +0 -1
  141. package/dist/array/unique.d.ts +0 -2
  142. package/dist/array/unique.d.ts.map +0 -1
  143. package/dist/cjs/api/client.d.ts +0 -25
  144. package/dist/cjs/api/client.d.ts.map +0 -1
  145. package/dist/cjs/api/client.js +0 -148
  146. package/dist/cjs/api/client.js.map +0 -1
  147. package/dist/cjs/api/index.d.ts +0 -3
  148. package/dist/cjs/api/index.d.ts.map +0 -1
  149. package/dist/cjs/api/index.js +0 -6
  150. package/dist/cjs/api/index.js.map +0 -1
  151. package/dist/cjs/api/wrapper.d.ts +0 -27
  152. package/dist/cjs/api/wrapper.d.ts.map +0 -1
  153. package/dist/cjs/api/wrapper.js +0 -152
  154. package/dist/cjs/api/wrapper.js.map +0 -1
  155. package/dist/cjs/array/index.d.ts +0 -3
  156. package/dist/cjs/array/index.d.ts.map +0 -1
  157. package/dist/cjs/array/index.js +0 -19
  158. package/dist/cjs/array/index.js.map +0 -1
  159. package/dist/cjs/array/shuffle.d.ts +0 -2
  160. package/dist/cjs/array/shuffle.d.ts.map +0 -1
  161. package/dist/cjs/array/shuffle.js +0 -16
  162. package/dist/cjs/array/shuffle.js.map +0 -1
  163. package/dist/cjs/array/unique.d.ts +0 -2
  164. package/dist/cjs/array/unique.d.ts.map +0 -1
  165. package/dist/cjs/array/unique.js +0 -7
  166. package/dist/cjs/array/unique.js.map +0 -1
  167. package/dist/cjs/array.js +0 -1
  168. package/dist/cjs/date/dayjs.d.ts +0 -20
  169. package/dist/cjs/date/dayjs.d.ts.map +0 -1
  170. package/dist/cjs/date/dayjs.js +0 -123
  171. package/dist/cjs/date/dayjs.js.map +0 -1
  172. package/dist/cjs/date/fix-timezone-offset.d.ts +0 -3
  173. package/dist/cjs/date/fix-timezone-offset.d.ts.map +0 -1
  174. package/dist/cjs/date/fix-timezone-offset.js +0 -9
  175. package/dist/cjs/date/fix-timezone-offset.js.map +0 -1
  176. package/dist/cjs/date/format-date.d.ts +0 -23
  177. package/dist/cjs/date/format-date.d.ts.map +0 -1
  178. package/dist/cjs/date/format-date.js +0 -71
  179. package/dist/cjs/date/format-date.js.map +0 -1
  180. package/dist/cjs/date/get-current-date-in-utc.d.ts +0 -3
  181. package/dist/cjs/date/get-current-date-in-utc.d.ts.map +0 -1
  182. package/dist/cjs/date/get-current-date-in-utc.js +0 -8
  183. package/dist/cjs/date/get-current-date-in-utc.js.map +0 -1
  184. package/dist/cjs/date/get-date-in-utc.d.ts +0 -3
  185. package/dist/cjs/date/get-date-in-utc.d.ts.map +0 -1
  186. package/dist/cjs/date/get-date-in-utc.js +0 -8
  187. package/dist/cjs/date/get-date-in-utc.js.map +0 -1
  188. package/dist/cjs/date/get-relative-time.d.ts +0 -3
  189. package/dist/cjs/date/get-relative-time.d.ts.map +0 -1
  190. package/dist/cjs/date/get-relative-time.js +0 -8
  191. package/dist/cjs/date/get-relative-time.js.map +0 -1
  192. package/dist/cjs/date/index.d.ts +0 -8
  193. package/dist/cjs/date/index.d.ts.map +0 -1
  194. package/dist/cjs/date/index.js +0 -24
  195. package/dist/cjs/date/index.js.map +0 -1
  196. package/dist/cjs/date/parse-time-spent.d.ts +0 -15
  197. package/dist/cjs/date/parse-time-spent.d.ts.map +0 -1
  198. package/dist/cjs/date/parse-time-spent.js +0 -207
  199. package/dist/cjs/date/parse-time-spent.js.map +0 -1
  200. package/dist/cjs/date.js +0 -1
  201. package/dist/cjs/files/compress-image.d.ts +0 -10
  202. package/dist/cjs/files/compress-image.d.ts.map +0 -1
  203. package/dist/cjs/files/compress-image.js +0 -61
  204. package/dist/cjs/files/compress-image.js.map +0 -1
  205. package/dist/cjs/files/download-url.d.ts +0 -2
  206. package/dist/cjs/files/download-url.d.ts.map +0 -1
  207. package/dist/cjs/files/download-url.js +0 -29
  208. package/dist/cjs/files/download-url.js.map +0 -1
  209. package/dist/cjs/files/file-delete.d.ts +0 -2
  210. package/dist/cjs/files/file-delete.d.ts.map +0 -1
  211. package/dist/cjs/files/file-delete.js +0 -20
  212. package/dist/cjs/files/file-delete.js.map +0 -1
  213. package/dist/cjs/files/file-exists.d.ts +0 -2
  214. package/dist/cjs/files/file-exists.d.ts.map +0 -1
  215. package/dist/cjs/files/file-exists.js +0 -18
  216. package/dist/cjs/files/file-exists.js.map +0 -1
  217. package/dist/cjs/files/format-bytes.d.ts +0 -2
  218. package/dist/cjs/files/format-bytes.d.ts.map +0 -1
  219. package/dist/cjs/files/format-bytes.js +0 -17
  220. package/dist/cjs/files/format-bytes.js.map +0 -1
  221. package/dist/cjs/files/index.d.ts +0 -6
  222. package/dist/cjs/files/index.d.ts.map +0 -1
  223. package/dist/cjs/files/index.js +0 -22
  224. package/dist/cjs/files/index.js.map +0 -1
  225. package/dist/cjs/files.js +0 -1
  226. package/dist/cjs/function/debounce.d.ts +0 -11
  227. package/dist/cjs/function/debounce.d.ts.map +0 -1
  228. package/dist/cjs/function/debounce.js +0 -26
  229. package/dist/cjs/function/debounce.js.map +0 -1
  230. package/dist/cjs/function/index.d.ts +0 -4
  231. package/dist/cjs/function/index.d.ts.map +0 -1
  232. package/dist/cjs/function/index.js +0 -20
  233. package/dist/cjs/function/index.js.map +0 -1
  234. package/dist/cjs/function/throttle.d.ts +0 -10
  235. package/dist/cjs/function/throttle.d.ts.map +0 -1
  236. package/dist/cjs/function/throttle.js +0 -36
  237. package/dist/cjs/function/throttle.js.map +0 -1
  238. package/dist/cjs/function/try-catch.d.ts.map +0 -1
  239. package/dist/cjs/function/try-catch.js +0 -39
  240. package/dist/cjs/function/try-catch.js.map +0 -1
  241. package/dist/cjs/function.js +0 -1
  242. package/dist/cjs/index.d.ts +0 -8
  243. package/dist/cjs/index.d.ts.map +0 -1
  244. package/dist/cjs/index.js +0 -24
  245. package/dist/cjs/index.js.map +0 -1
  246. package/dist/cjs/string/camel-case.d.ts +0 -2
  247. package/dist/cjs/string/camel-case.d.ts.map +0 -1
  248. package/dist/cjs/string/camel-case.js +0 -25
  249. package/dist/cjs/string/camel-case.js.map +0 -1
  250. package/dist/cjs/string/capitalize.d.ts +0 -2
  251. package/dist/cjs/string/capitalize.d.ts.map +0 -1
  252. package/dist/cjs/string/capitalize.js +0 -13
  253. package/dist/cjs/string/capitalize.js.map +0 -1
  254. package/dist/cjs/string/format-hms-to-seconds.d.ts +0 -2
  255. package/dist/cjs/string/format-hms-to-seconds.d.ts.map +0 -1
  256. package/dist/cjs/string/format-hms-to-seconds.js +0 -30
  257. package/dist/cjs/string/format-hms-to-seconds.js.map +0 -1
  258. package/dist/cjs/string/format-seconds-to-fragment.d.ts +0 -3
  259. package/dist/cjs/string/format-seconds-to-fragment.d.ts.map +0 -1
  260. package/dist/cjs/string/format-seconds-to-fragment.js +0 -20
  261. package/dist/cjs/string/format-seconds-to-fragment.js.map +0 -1
  262. package/dist/cjs/string/format-seconds-to-hms.d.ts +0 -2
  263. package/dist/cjs/string/format-seconds-to-hms.d.ts.map +0 -1
  264. package/dist/cjs/string/format-seconds-to-hms.js +0 -17
  265. package/dist/cjs/string/format-seconds-to-hms.js.map +0 -1
  266. package/dist/cjs/string/format-string-to-time.d.ts +0 -2
  267. package/dist/cjs/string/format-string-to-time.d.ts.map +0 -1
  268. package/dist/cjs/string/format-string-to-time.js +0 -15
  269. package/dist/cjs/string/format-string-to-time.js.map +0 -1
  270. package/dist/cjs/string/index.d.ts +0 -14
  271. package/dist/cjs/string/index.d.ts.map +0 -1
  272. package/dist/cjs/string/index.js +0 -30
  273. package/dist/cjs/string/index.js.map +0 -1
  274. package/dist/cjs/string/kebab-case.d.ts +0 -2
  275. package/dist/cjs/string/kebab-case.d.ts.map +0 -1
  276. package/dist/cjs/string/kebab-case.js +0 -15
  277. package/dist/cjs/string/kebab-case.js.map +0 -1
  278. package/dist/cjs/string/markdown-to-text.d.ts +0 -2
  279. package/dist/cjs/string/markdown-to-text.d.ts.map +0 -1
  280. package/dist/cjs/string/markdown-to-text.js +0 -70
  281. package/dist/cjs/string/markdown-to-text.js.map +0 -1
  282. package/dist/cjs/string/remove-html-tags.d.ts +0 -2
  283. package/dist/cjs/string/remove-html-tags.d.ts.map +0 -1
  284. package/dist/cjs/string/remove-html-tags.js +0 -18
  285. package/dist/cjs/string/remove-html-tags.js.map +0 -1
  286. package/dist/cjs/string/slugify.d.ts +0 -2
  287. package/dist/cjs/string/slugify.d.ts.map +0 -1
  288. package/dist/cjs/string/slugify.js +0 -13
  289. package/dist/cjs/string/slugify.js.map +0 -1
  290. package/dist/cjs/string/snake-case.d.ts +0 -2
  291. package/dist/cjs/string/snake-case.d.ts.map +0 -1
  292. package/dist/cjs/string/snake-case.js +0 -15
  293. package/dist/cjs/string/snake-case.js.map +0 -1
  294. package/dist/cjs/string/to-sentence-case.d.ts +0 -2
  295. package/dist/cjs/string/to-sentence-case.d.ts.map +0 -1
  296. package/dist/cjs/string/to-sentence-case.js +0 -13
  297. package/dist/cjs/string/to-sentence-case.js.map +0 -1
  298. package/dist/cjs/string/truncate.d.ts +0 -2
  299. package/dist/cjs/string/truncate.d.ts.map +0 -1
  300. package/dist/cjs/string/truncate.js +0 -19
  301. package/dist/cjs/string/truncate.js.map +0 -1
  302. package/dist/cjs/string.js +0 -1
  303. package/dist/cjs/youtube/extract-youtube-video-id.d.ts +0 -2
  304. package/dist/cjs/youtube/extract-youtube-video-id.d.ts.map +0 -1
  305. package/dist/cjs/youtube/extract-youtube-video-id.js +0 -30
  306. package/dist/cjs/youtube/extract-youtube-video-id.js.map +0 -1
  307. package/dist/cjs/youtube/generate-youtube-url.d.ts +0 -20
  308. package/dist/cjs/youtube/generate-youtube-url.d.ts.map +0 -1
  309. package/dist/cjs/youtube/generate-youtube-url.js +0 -86
  310. package/dist/cjs/youtube/generate-youtube-url.js.map +0 -1
  311. package/dist/cjs/youtube/get-video-duration.d.ts +0 -7
  312. package/dist/cjs/youtube/get-video-duration.d.ts.map +0 -1
  313. package/dist/cjs/youtube/get-video-duration.js +0 -150
  314. package/dist/cjs/youtube/get-video-duration.js.map +0 -1
  315. package/dist/cjs/youtube/get-youtube-thumbnail.d.ts +0 -2
  316. package/dist/cjs/youtube/get-youtube-thumbnail.d.ts.map +0 -1
  317. package/dist/cjs/youtube/get-youtube-thumbnail.js +0 -68
  318. package/dist/cjs/youtube/get-youtube-thumbnail.js.map +0 -1
  319. package/dist/cjs/youtube/get-youtube-video-info.d.ts +0 -26
  320. package/dist/cjs/youtube/get-youtube-video-info.d.ts.map +0 -1
  321. package/dist/cjs/youtube/get-youtube-video-info.js +0 -244
  322. package/dist/cjs/youtube/get-youtube-video-info.js.map +0 -1
  323. package/dist/cjs/youtube/index.d.ts +0 -7
  324. package/dist/cjs/youtube/index.d.ts.map +0 -1
  325. package/dist/cjs/youtube/index.js +0 -23
  326. package/dist/cjs/youtube/index.js.map +0 -1
  327. package/dist/cjs/youtube/validate-youtube-link.d.ts +0 -2
  328. package/dist/cjs/youtube/validate-youtube-link.d.ts.map +0 -1
  329. package/dist/cjs/youtube/validate-youtube-link.js +0 -77
  330. package/dist/cjs/youtube/validate-youtube-link.js.map +0 -1
  331. package/dist/cjs/youtube.js +0 -1
  332. package/dist/date/dayjs.d.ts +0 -20
  333. package/dist/date/dayjs.d.ts.map +0 -1
  334. package/dist/date/fix-timezone-offset.d.ts +0 -3
  335. package/dist/date/fix-timezone-offset.d.ts.map +0 -1
  336. package/dist/date/format-date.d.ts +0 -23
  337. package/dist/date/format-date.d.ts.map +0 -1
  338. package/dist/date/get-current-date-in-utc.d.ts +0 -3
  339. package/dist/date/get-current-date-in-utc.d.ts.map +0 -1
  340. package/dist/date/get-date-in-utc.d.ts +0 -3
  341. package/dist/date/get-date-in-utc.d.ts.map +0 -1
  342. package/dist/date/get-relative-time.d.ts +0 -3
  343. package/dist/date/get-relative-time.d.ts.map +0 -1
  344. package/dist/date/index.d.ts.map +0 -1
  345. package/dist/date/parse-time-spent.d.ts +0 -15
  346. package/dist/date/parse-time-spent.d.ts.map +0 -1
  347. package/dist/esm/api/client.js +0 -143
  348. package/dist/esm/api/index.js +0 -1
  349. package/dist/esm/api/wrapper.js +0 -148
  350. package/dist/esm/array/index.js +0 -2
  351. package/dist/esm/array/shuffle.js +0 -12
  352. package/dist/esm/array/unique.js +0 -3
  353. package/dist/esm/array.js +0 -1
  354. package/dist/esm/date/dayjs.js +0 -111
  355. package/dist/esm/date/fix-timezone-offset.js +0 -5
  356. package/dist/esm/date/format-date.js +0 -67
  357. package/dist/esm/date/get-current-date-in-utc.js +0 -4
  358. package/dist/esm/date/get-date-in-utc.js +0 -4
  359. package/dist/esm/date/get-relative-time.js +0 -4
  360. package/dist/esm/date/index.js +0 -7
  361. package/dist/esm/date/parse-time-spent.js +0 -203
  362. package/dist/esm/date.js +0 -1
  363. package/dist/esm/files/compress-image.js +0 -57
  364. package/dist/esm/files/download-url.js +0 -24
  365. package/dist/esm/files/file-delete.js +0 -12
  366. package/dist/esm/files/file-exists.js +0 -10
  367. package/dist/esm/files/format-bytes.js +0 -13
  368. package/dist/esm/files/index.js +0 -5
  369. package/dist/esm/files.js +0 -1
  370. package/dist/esm/function/debounce.js +0 -22
  371. package/dist/esm/function/index.js +0 -3
  372. package/dist/esm/function/throttle.js +0 -32
  373. package/dist/esm/function/try-catch.js +0 -35
  374. package/dist/esm/function.js +0 -1
  375. package/dist/esm/index.js +0 -7
  376. package/dist/esm/string/camel-case.js +0 -21
  377. package/dist/esm/string/capitalize.js +0 -9
  378. package/dist/esm/string/format-hms-to-seconds.js +0 -25
  379. package/dist/esm/string/format-seconds-to-fragment.js +0 -15
  380. package/dist/esm/string/format-seconds-to-hms.js +0 -13
  381. package/dist/esm/string/format-string-to-time.js +0 -10
  382. package/dist/esm/string/index.js +0 -13
  383. package/dist/esm/string/kebab-case.js +0 -11
  384. package/dist/esm/string/markdown-to-text.js +0 -66
  385. package/dist/esm/string/remove-html-tags.js +0 -14
  386. package/dist/esm/string/slugify.js +0 -9
  387. package/dist/esm/string/snake-case.js +0 -11
  388. package/dist/esm/string/to-sentence-case.js +0 -9
  389. package/dist/esm/string/truncate.js +0 -15
  390. package/dist/esm/string.js +0 -1
  391. package/dist/esm/youtube/extract-youtube-video-id.js +0 -26
  392. package/dist/esm/youtube/generate-youtube-url.js +0 -81
  393. package/dist/esm/youtube/get-video-duration.js +0 -146
  394. package/dist/esm/youtube/get-youtube-thumbnail.js +0 -31
  395. package/dist/esm/youtube/get-youtube-video-info.js +0 -207
  396. package/dist/esm/youtube/index.js +0 -6
  397. package/dist/esm/youtube/validate-youtube-link.js +0 -40
  398. package/dist/esm/youtube.js +0 -1
  399. package/dist/files/compress-image.d.ts +0 -10
  400. package/dist/files/compress-image.d.ts.map +0 -1
  401. package/dist/files/download-url.d.ts +0 -2
  402. package/dist/files/download-url.d.ts.map +0 -1
  403. package/dist/files/file-delete.d.ts +0 -2
  404. package/dist/files/file-delete.d.ts.map +0 -1
  405. package/dist/files/file-exists.d.ts +0 -2
  406. package/dist/files/file-exists.d.ts.map +0 -1
  407. package/dist/files/format-bytes.d.ts +0 -2
  408. package/dist/files/format-bytes.d.ts.map +0 -1
  409. package/dist/files/index.d.ts.map +0 -1
  410. package/dist/function/debounce.d.ts +0 -11
  411. package/dist/function/debounce.d.ts.map +0 -1
  412. package/dist/function/index.d.ts.map +0 -1
  413. package/dist/function/throttle.d.ts +0 -10
  414. package/dist/function/throttle.d.ts.map +0 -1
  415. package/dist/function/try-catch.d.ts.map +0 -1
  416. package/dist/index.d.ts.map +0 -1
  417. package/dist/string/camel-case.d.ts +0 -2
  418. package/dist/string/camel-case.d.ts.map +0 -1
  419. package/dist/string/capitalize.d.ts +0 -2
  420. package/dist/string/capitalize.d.ts.map +0 -1
  421. package/dist/string/format-hms-to-seconds.d.ts +0 -2
  422. package/dist/string/format-hms-to-seconds.d.ts.map +0 -1
  423. package/dist/string/format-seconds-to-fragment.d.ts +0 -3
  424. package/dist/string/format-seconds-to-fragment.d.ts.map +0 -1
  425. package/dist/string/format-seconds-to-hms.d.ts +0 -2
  426. package/dist/string/format-seconds-to-hms.d.ts.map +0 -1
  427. package/dist/string/format-string-to-time.d.ts +0 -2
  428. package/dist/string/format-string-to-time.d.ts.map +0 -1
  429. package/dist/string/index.d.ts.map +0 -1
  430. package/dist/string/kebab-case.d.ts +0 -2
  431. package/dist/string/kebab-case.d.ts.map +0 -1
  432. package/dist/string/markdown-to-text.d.ts +0 -2
  433. package/dist/string/markdown-to-text.d.ts.map +0 -1
  434. package/dist/string/remove-html-tags.d.ts +0 -2
  435. package/dist/string/remove-html-tags.d.ts.map +0 -1
  436. package/dist/string/slugify.d.ts +0 -2
  437. package/dist/string/slugify.d.ts.map +0 -1
  438. package/dist/string/snake-case.d.ts +0 -2
  439. package/dist/string/snake-case.d.ts.map +0 -1
  440. package/dist/string/to-sentence-case.d.ts +0 -2
  441. package/dist/string/to-sentence-case.d.ts.map +0 -1
  442. package/dist/string/truncate.d.ts +0 -2
  443. package/dist/string/truncate.d.ts.map +0 -1
  444. package/dist/youtube/extract-youtube-video-id.d.ts +0 -2
  445. package/dist/youtube/extract-youtube-video-id.d.ts.map +0 -1
  446. package/dist/youtube/generate-youtube-url.d.ts +0 -20
  447. package/dist/youtube/generate-youtube-url.d.ts.map +0 -1
  448. package/dist/youtube/get-video-duration.d.ts +0 -7
  449. package/dist/youtube/get-video-duration.d.ts.map +0 -1
  450. package/dist/youtube/get-youtube-thumbnail.d.ts +0 -2
  451. package/dist/youtube/get-youtube-thumbnail.d.ts.map +0 -1
  452. package/dist/youtube/get-youtube-video-info.d.ts +0 -26
  453. package/dist/youtube/get-youtube-video-info.d.ts.map +0 -1
  454. package/dist/youtube/index.d.ts.map +0 -1
  455. package/dist/youtube/validate-youtube-link.d.ts +0 -2
  456. package/dist/youtube/validate-youtube-link.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"kebab-case.js","sourceRoot":"","sources":["../../../src/string/kebab-case.ts"],"names":[],"mappings":";;AAAA,8BAWC;AAXD,SAAgB,SAAS,CAAC,GAAW;IACnC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,GAAG;SACP,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,WAAW,EAAE;SACb,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAC5B,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function markdownToText(markdown: string): string;
2
- //# sourceMappingURL=markdown-to-text.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown-to-text.d.ts","sourceRoot":"","sources":["../../../src/string/markdown-to-text.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAsFvD"}
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.markdownToText = markdownToText;
4
- function markdownToText(markdown) {
5
- if (!markdown)
6
- return "";
7
- // normalize newlines
8
- let text = markdown.replace(/\r\n?/g, "\n");
9
- // Remove code fences but keep inner content (trim surrounding newlines to avoid extra blank lines)
10
- text = text.replace(/```[\s\S]*?```/g, (m) => {
11
- const inner = m.replace(/^```.*\n?/, "").replace(/```$/, "");
12
- return inner.replace(/^\n+|\n+$/g, "");
13
- });
14
- // Remove inline code backticks
15
- text = text.replace(/`([^`]+)`/g, "$1");
16
- // Images: keep alt text if present
17
- text = text.replace(/!\[([^\]]*)\]\((?:[^)]+)\)/g, "$1");
18
- // Links: keep link text
19
- text = text.replace(/\[([^\]]+)\]\((?:[^)]+)\)/g, "$1");
20
- // Reference-style links: [text][id] -> text
21
- text = text.replace(/\[([^\]]+)\]\s*\[[^\]]*\]/g, "$1");
22
- // Remove footnote markers like [^1] (do this before we mutate surrounding lines)
23
- text = text.replace(/\[\^[^\]]+\]/g, "");
24
- // Remove reference definitions like: [id]: url (and footnote defs like [^1]: note)
25
- // Remove the entire definition line including its trailing newline to avoid leaving blank lines
26
- text = text.replace(/^\s*\[[^\]]+\]:\s*.*(?:\r\n?|\n)?/gm, "");
27
- text = text.replace(/^\s*\[\^[^\]]+\]:\s*.*(?:\r\n?|\n)?/gm, "");
28
- // Remove HTML tags but keep inner text
29
- text = text.replace(/<\/?[^>]+>/g, "");
30
- // Remove emphasis markers (bold/italic/strikethrough), preserve text
31
- text = text.replace(/(\*\*|__)(.*?)\1/g, "$2");
32
- text = text.replace(/(\*|_)(.*?)\1/g, "$2");
33
- text = text.replace(/~~(.*?)~~/g, "$1");
34
- // Remove headings (#, ##, etc.)
35
- text = text.replace(/^\s{0,3}#{1,6}\s*/gm, "");
36
- // Remove blockquote markers
37
- text = text.replace(/^\s{0,3}>\s?/gm, "");
38
- // Remove list markers (ordered and unordered)
39
- text = text.replace(/^\s{0,3}([-+*]|\d+\.)\s+/gm, "");
40
- // Remove table separator lines and keep table cell content by replacing pipes with spaced pipes
41
- // Match the separator line and any trailing newline so we don't leave an empty line behind
42
- // Remove separator lines entirely (don't insert an extra newline)
43
- text = text.replace(/^\s*\|?(?:\s*:?-+:?\s*\|)+\s*(?:\r\n?|\n)?/gm, "");
44
- text = text.replace(/\|/g, " | ");
45
- // Trim leading whitespace on each line (fixes leading space introduced by replacing pipes)
46
- text = text.replace(/^[ \t]+/gm, "");
47
- // Fix table spacing edge-case: when a cell starts with two spaces before a digit (caused by adding spaces around pipes), collapse to a single space
48
- text = text.replace(/\|\s{2}(?=\d)/g, "| ");
49
- // Remove footnote markers like [^1]
50
- text = text.replace(/\[\^[^\]]+\]/g, "");
51
- // Remove any leftover footnote-definition fragments that may have been concatenated to the previous line
52
- // e.g. "Text^1: note" -> "Text"
53
- text = text.replace(/\^[0-9]+:\s*.*(?:\r\n?|\n)?/g, "");
54
- // Decode a few common HTML entities
55
- const entities = {
56
- "&amp;": "&",
57
- "&lt;": "<",
58
- "&gt;": ">",
59
- "&quot;": '"',
60
- "&#39;": "'",
61
- };
62
- text = text.replace(/&[a-zA-Z0-9#]+;/g, (e) => { var _a; return (_a = entities[e]) !== null && _a !== void 0 ? _a : e; });
63
- // Trim trailing whitespace on each line
64
- text = text.replace(/[ \t]+$/gm, "");
65
- // Collapse excessive blank lines to at most two (preserve paragraph breaks)
66
- text = text.replace(/\n{3,}/g, "\n\n");
67
- // Final trim but preserve leading/trailing single newlines inside content as needed
68
- return text.trim();
69
- }
70
- //# sourceMappingURL=markdown-to-text.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"markdown-to-text.js","sourceRoot":"","sources":["../../../src/string/markdown-to-text.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function removeHtmlTags(input: string): string;
2
- //# sourceMappingURL=remove-html-tags.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove-html-tags.d.ts","sourceRoot":"","sources":["../../../src/string/remove-html-tags.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAepD"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeHtmlTags = removeHtmlTags;
4
- function removeHtmlTags(input) {
5
- // Input validation
6
- if (!input || typeof input !== "string") {
7
- return "";
8
- }
9
- // Apply reasonable input length limit for safety
10
- const maxLength = 100000; // Adjust based on your requirements
11
- let updatedInput = input;
12
- if (updatedInput.length > maxLength) {
13
- updatedInput = updatedInput.slice(0, maxLength);
14
- }
15
- // Use a non-backtracking approach to prevent ReDoS vulnerabilities
16
- return updatedInput.replace(/<(?:[^>"']|"[^"]*"|'[^']*')*>/g, "");
17
- }
18
- //# sourceMappingURL=remove-html-tags.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remove-html-tags.js","sourceRoot":"","sources":["../../../src/string/remove-html-tags.ts"],"names":[],"mappings":";;AAAA,wCAeC;AAfD,SAAgB,cAAc,CAAC,KAAa;IAC1C,mBAAmB;IACnB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,iDAAiD;IACjD,MAAM,SAAS,GAAG,MAAM,CAAA,CAAC,oCAAoC;IAC7D,IAAI,YAAY,GAAG,KAAK,CAAA;IACxB,IAAI,YAAY,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QACpC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IACjD,CAAC;IAED,mEAAmE;IACnE,OAAO,YAAY,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAA;AACnE,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function slugify(text: string): string;
2
- //# sourceMappingURL=slugify.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slugify.d.ts","sourceRoot":"","sources":["../../../src/string/slugify.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ5C"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.slugify = slugify;
4
- function slugify(text) {
5
- return text
6
- .normalize("NFD")
7
- .replace(/[\u0300-\u036f]/g, "")
8
- .replace(/[^\w\s]/gi, "")
9
- .trim()
10
- .replace(/\s+/g, "-")
11
- .toLowerCase();
12
- }
13
- //# sourceMappingURL=slugify.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slugify.js","sourceRoot":"","sources":["../../../src/string/slugify.ts"],"names":[],"mappings":";;AAAA,0BAQC;AARD,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI;SACR,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxB,IAAI,EAAE;SACN,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,WAAW,EAAE,CAAA;AAClB,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function snakeCase(str: string): string;
2
- //# sourceMappingURL=snake-case.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snake-case.d.ts","sourceRoot":"","sources":["../../../src/string/snake-case.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW7C"}
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.snakeCase = snakeCase;
4
- function snakeCase(str) {
5
- if (typeof str !== "string") {
6
- throw new Error("Input must be a string");
7
- }
8
- return str
9
- .replace(/([a-z])([A-Z])/g, "$1_$2")
10
- .replace(/[\s-]+/g, "_")
11
- .replace(/[^a-zA-Z0-9_]/g, "")
12
- .toLowerCase()
13
- .replace(/^_+|_+$/g, "");
14
- }
15
- //# sourceMappingURL=snake-case.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snake-case.js","sourceRoot":"","sources":["../../../src/string/snake-case.ts"],"names":[],"mappings":";;AAAA,8BAWC;AAXD,SAAgB,SAAS,CAAC,GAAW;IACnC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,GAAG;SACP,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,WAAW,EAAE;SACb,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAC5B,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function toSentenceCase(str: string): string;
2
- //# sourceMappingURL=to-sentence-case.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"to-sentence-case.d.ts","sourceRoot":"","sources":["../../../src/string/to-sentence-case.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,UAQzC"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toSentenceCase = toSentenceCase;
4
- function toSentenceCase(str) {
5
- return str
6
- .replace(/_/g, " ")
7
- .replace(/([A-Z])/g, " $1")
8
- .toLowerCase()
9
- .replace(/^\w/, (c) => c.toUpperCase())
10
- .replace(/\s+/g, " ")
11
- .trim();
12
- }
13
- //# sourceMappingURL=to-sentence-case.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"to-sentence-case.js","sourceRoot":"","sources":["../../../src/string/to-sentence-case.ts"],"names":[],"mappings":";;AAAA,wCAQC;AARD,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,WAAW,EAAE;SACb,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACtC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAA;AACX,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function truncate(str: string, length: number, suffix?: string): string;
2
- //# sourceMappingURL=truncate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../../src/string/truncate.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAQ,GAAG,MAAM,CAkB5E"}
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.truncate = truncate;
4
- function truncate(str, length, suffix = "...") {
5
- if (typeof str !== "string") {
6
- throw new Error("Input must be a string");
7
- }
8
- if (typeof length !== "number" || length < 0) {
9
- throw new Error("Length must be a non-negative number");
10
- }
11
- if (str.length <= length) {
12
- return str;
13
- }
14
- if (length === 0) {
15
- return suffix;
16
- }
17
- return str.slice(0, Math.max(0, length - suffix.length)) + suffix;
18
- }
19
- //# sourceMappingURL=truncate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../../src/string/truncate.ts"],"names":[],"mappings":";;AAAA,4BAkBC;AAlBD,SAAgB,QAAQ,CAAC,GAAW,EAAE,MAAc,EAAE,MAAM,GAAG,KAAK;IAClE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;QACzB,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAA;AACnE,CAAC"}
@@ -1 +0,0 @@
1
- module.exports = require('./string/index.js')
@@ -1,2 +0,0 @@
1
- export declare function extractYouTubeId(urlString: string | null): string | null;
2
- //# sourceMappingURL=extract-youtube-video-id.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract-youtube-video-id.d.ts","sourceRoot":"","sources":["../../../src/youtube/extract-youtube-video-id.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CA4BxE"}
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractYouTubeId = extractYouTubeId;
4
- function extractYouTubeId(urlString) {
5
- if (!urlString)
6
- return null;
7
- try {
8
- const url = new URL(urlString);
9
- const hostname = url.hostname.toLowerCase();
10
- const pathname = url.pathname;
11
- if (hostname.includes("youtu.be")) {
12
- const id = pathname.replace(/^\/+/, "").split(/[?&#]/)[0];
13
- return id || null;
14
- }
15
- if (hostname.includes("youtube.com")) {
16
- if (url.searchParams.has("v")) {
17
- return url.searchParams.get("v");
18
- }
19
- const parts = pathname.split("/").filter(Boolean);
20
- const last = parts[parts.length - 1];
21
- if (last)
22
- return last.split(/[?&#]/)[0] || null;
23
- }
24
- }
25
- catch (_a) { }
26
- const regex = /(?:v=|\/embed\/|\/shorts\/|youtu\.be\/)([0-9A-Za-z_-]{6,})/i;
27
- const match = urlString.match(regex);
28
- return match ? match[1] : null;
29
- }
30
- //# sourceMappingURL=extract-youtube-video-id.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract-youtube-video-id.js","sourceRoot":"","sources":["../../../src/youtube/extract-youtube-video-id.ts"],"names":[],"mappings":";;AAAA,4CA4BC;AA5BD,SAAgB,gBAAgB,CAAC,SAAwB;IACvD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAE3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;QAE9B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;QAC3C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAA;QAE7B,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YACzD,OAAO,EAAE,IAAI,IAAI,CAAA;QACnB,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAClC,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACpC,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;QACjD,CAAC;IACH,CAAC;IAAC,WAAM,CAAC,CAAA,CAAC;IAEV,MAAM,KAAK,GAAG,6DAA6D,CAAA;IAC3E,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACpC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAChC,CAAC"}
@@ -1,20 +0,0 @@
1
- type TCreateYoutubeLinkOptions = {
2
- videoURL: string;
3
- start?: number | string;
4
- end?: number | string;
5
- embed?: boolean;
6
- short?: boolean;
7
- useFragment?: boolean;
8
- autoplay?: boolean;
9
- controls?: 0 | 1;
10
- rel?: 0 | 1;
11
- loop?: boolean;
12
- mute?: boolean;
13
- modestbranding?: 0 | 1;
14
- origin?: string;
15
- playlist?: string;
16
- params?: Record<string, string | number | boolean>;
17
- };
18
- export declare const generateYoutubeURL: (opts: TCreateYoutubeLinkOptions) => string | null;
19
- export {};
20
- //# sourceMappingURL=generate-youtube-url.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-youtube-url.d.ts","sourceRoot":"","sources":["../../../src/youtube/generate-youtube-url.ts"],"names":[],"mappings":"AAGA,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAEhB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAErB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAChB,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACX,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;CACnD,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,MAAM,yBAAyB,KAC9B,MAAM,GAAG,IAiGX,CAAA"}
@@ -1,86 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateYoutubeURL = void 0;
4
- const string_1 = require("../string");
5
- const extract_youtube_video_id_1 = require("./extract-youtube-video-id");
6
- const generateYoutubeURL = (opts) => {
7
- const { videoURL, start, end, embed = false, short = false, useFragment = false, autoplay, controls, rel, loop, mute, modestbranding, origin, playlist, params = {}, } = opts;
8
- const videoId = (0, extract_youtube_video_id_1.extractYouTubeId)(videoURL);
9
- if (!videoId)
10
- return null;
11
- const startSec = (0, string_1.formatHMSToSeconds)(start);
12
- const endSec = (0, string_1.formatHMSToSeconds)(end);
13
- // base url
14
- const base = embed
15
- ? `https://www.youtube.com/embed/${videoId}`
16
- : short
17
- ? `https://youtu.be/${videoId}`
18
- : "https://www.youtube.com/watch";
19
- const search = new URLSearchParams();
20
- // Add video ID for watch URLs
21
- if (!embed && !short) {
22
- search.set("v", videoId);
23
- }
24
- // Standard param names for watch/embed
25
- if (!useFragment) {
26
- if (startSec != null) {
27
- // youtu.be historically uses "t" as a query param, but "start" is widely supported.
28
- // Use "t" for short links, otherwise "start".
29
- search.set(short ? "t" : "start", String(startSec));
30
- }
31
- if (endSec != null) {
32
- search.set("end", String(endSec));
33
- }
34
- }
35
- // embed / player related params
36
- if (typeof autoplay !== "undefined")
37
- search.set("autoplay", autoplay ? "1" : "0");
38
- if (typeof controls !== "undefined")
39
- search.set("controls", String(controls));
40
- if (typeof rel !== "undefined")
41
- search.set("rel", String(rel));
42
- if (typeof modestbranding !== "undefined")
43
- search.set("modestbranding", String(modestbranding));
44
- if (typeof origin !== "undefined")
45
- search.set("origin", origin);
46
- if (typeof mute !== "undefined")
47
- search.set("mute", mute ? "1" : "0");
48
- // loop requires playlist param when embedding a single video
49
- if (loop) {
50
- search.set("loop", "1");
51
- if (playlist) {
52
- search.set("playlist", playlist);
53
- }
54
- else if (embed) {
55
- // for embed+loop, YouTube expects &playlist=VIDEO_ID
56
- search.set("playlist", videoId);
57
- }
58
- }
59
- else if (playlist) {
60
- search.set("playlist", playlist);
61
- }
62
- // merge custom params (allow overriding)
63
- Object.entries(params).forEach(([k, v]) => {
64
- if (v === false)
65
- search.set(k, "0");
66
- else if (v === true)
67
- search.set(k, "1");
68
- else
69
- search.set(k, String(v));
70
- });
71
- const qs = search.toString() ? `?${search.toString()}` : "";
72
- // fragment handling (e.g. #t=1m2s)
73
- let fragment = "";
74
- if (useFragment && startSec != null) {
75
- fragment = `#t=${(0, string_1.formatSecondsToFragment)(startSec)}`;
76
- }
77
- // For short links, people often prefer the short host and start as query or fragment.
78
- if (short) {
79
- // prefer fragment if requested, otherwise use search params (t)
80
- return `${base}${qs}${fragment}`;
81
- }
82
- // watch/embed links
83
- return `${base}${qs}${fragment}`;
84
- };
85
- exports.generateYoutubeURL = generateYoutubeURL;
86
- //# sourceMappingURL=generate-youtube-url.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-youtube-url.js","sourceRoot":"","sources":["../../../src/youtube/generate-youtube-url.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * getYoutubeVideoDuration
3
- * Returns a function that accepts a YouTube URL (full or short) and returns a Promise
4
- * resolving to the video duration formatted as "HH:MM:SS" or null on failure.
5
- */
6
- export declare function getYoutubeVideoDuration(videoUrl: string): Promise<string | null>;
7
- //# sourceMappingURL=get-video-duration.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-video-duration.d.ts","sourceRoot":"","sources":["../../../src/youtube/get-video-duration.ts"],"names":[],"mappings":"AAuCA;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqGxB"}
@@ -1,150 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getYoutubeVideoDuration = getYoutubeVideoDuration;
4
- /** biome-ignore-all lint/suspicious/noExplicitAny: Window is any */
5
- const string_1 = require("../string");
6
- const extract_youtube_video_id_1 = require("./extract-youtube-video-id");
7
- const validate_youtube_link_1 = require("./validate-youtube-link");
8
- let YtApiLoading = null;
9
- function loadYouTubeIFrameAPI() {
10
- var _a;
11
- if ((_a = window.YT) === null || _a === void 0 ? void 0 : _a.Player)
12
- return Promise.resolve();
13
- if (YtApiLoading)
14
- return YtApiLoading;
15
- YtApiLoading = new Promise((resolve) => {
16
- const existing = document.querySelector('script[src="https://www.youtube.com/iframe_api"]');
17
- if (existing) {
18
- // Poll until the API is ready
19
- const poll = setInterval(() => {
20
- var _a;
21
- if ((_a = window.YT) === null || _a === void 0 ? void 0 : _a.Player) {
22
- clearInterval(poll);
23
- resolve();
24
- }
25
- }, 50);
26
- return;
27
- }
28
- const tag = document.createElement("script");
29
- tag.src = "https://www.youtube.com/iframe_api";
30
- tag.async = true;
31
- document.body.appendChild(tag);
32
- window.onYouTubeIframeAPIReady = () => {
33
- resolve();
34
- };
35
- });
36
- return YtApiLoading;
37
- }
38
- /**
39
- * getYoutubeVideoDuration
40
- * Returns a function that accepts a YouTube URL (full or short) and returns a Promise
41
- * resolving to the video duration formatted as "HH:MM:SS" or null on failure.
42
- */
43
- async function getYoutubeVideoDuration(videoUrl) {
44
- const videoId = (0, extract_youtube_video_id_1.extractYouTubeId)(videoUrl);
45
- if (!videoId)
46
- return null;
47
- const videoIsValid = await (0, validate_youtube_link_1.validateYoutubeLink)(videoUrl);
48
- if (!videoIsValid)
49
- return null;
50
- try {
51
- await loadYouTubeIFrameAPI();
52
- }
53
- catch (_a) {
54
- return null;
55
- }
56
- return await new Promise((resolve) => {
57
- const iframeId = `yt-duration-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
58
- const iframe = document.createElement("iframe");
59
- // create a minimal offscreen iframe for the player
60
- iframe.id = iframeId;
61
- iframe.style.position = "fixed";
62
- iframe.style.left = "-9999px";
63
- iframe.style.width = "1px";
64
- iframe.style.height = "1px";
65
- iframe.style.opacity = "0";
66
- iframe.style.pointerEvents = "none";
67
- // embed URL with enablejsapi so we can construct YT.Player
68
- const origin = window.location.origin;
69
- iframe.src = `https://www.youtube.com/embed/${encodeURIComponent(videoId)}?enablejsapi=1&origin=${encodeURIComponent(origin)}`;
70
- let resolved = false;
71
- let player = null;
72
- let cleanupTimeout = null;
73
- function cleanupAndResolve(result) {
74
- if (resolved)
75
- return;
76
- resolved = true;
77
- try {
78
- if (player && typeof player.destroy === "function")
79
- player.destroy();
80
- }
81
- catch (_a) {
82
- /* ignore */
83
- }
84
- try {
85
- if (iframe.parentNode)
86
- iframe.parentNode.removeChild(iframe);
87
- }
88
- catch (_b) {
89
- /* ignore */
90
- }
91
- if (cleanupTimeout)
92
- window.clearTimeout(cleanupTimeout);
93
- resolve(result);
94
- }
95
- // timeout fallback
96
- cleanupTimeout = window.setTimeout(() => {
97
- cleanupAndResolve(null);
98
- }, 10000); // 10s timeout
99
- document.body.appendChild(iframe);
100
- // Construct player
101
- try {
102
- player = new window.YT.Player(iframeId, {
103
- events: {
104
- onReady: (e) => {
105
- try {
106
- let duration = e.target.getDuration();
107
- if (!duration || duration === 0) {
108
- // Sometimes duration is 0 immediately; try a few short retries
109
- let attempts = 0;
110
- const tryInterval = setInterval(() => {
111
- attempts += 1;
112
- try {
113
- duration = e.target.getDuration();
114
- if (duration && duration > 0) {
115
- clearInterval(tryInterval);
116
- cleanupAndResolve((0, string_1.formatSecondsToHMS)(duration));
117
- }
118
- else if (attempts >= 8) {
119
- clearInterval(tryInterval);
120
- cleanupAndResolve(null);
121
- }
122
- }
123
- catch (_a) {
124
- if (attempts >= 8) {
125
- clearInterval(tryInterval);
126
- cleanupAndResolve(null);
127
- }
128
- }
129
- }, 300);
130
- }
131
- else {
132
- cleanupAndResolve((0, string_1.formatSecondsToHMS)(duration));
133
- }
134
- }
135
- catch (_a) {
136
- cleanupAndResolve(null);
137
- }
138
- },
139
- onError: () => {
140
- cleanupAndResolve(null);
141
- },
142
- },
143
- });
144
- }
145
- catch (_a) {
146
- cleanupAndResolve(null);
147
- }
148
- });
149
- }
150
- //# sourceMappingURL=get-video-duration.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-video-duration.js","sourceRoot":"","sources":["../../../src/youtube/get-video-duration.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function getYoutubeThumbnail(videoUrl: string): Promise<string | null>;
2
- //# sourceMappingURL=get-youtube-thumbnail.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-youtube-thumbnail.d.ts","sourceRoot":"","sources":["../../../src/youtube/get-youtube-thumbnail.ts"],"names":[],"mappings":"AAAA,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgCxB"}