@herowcode/utils 1.1.7 → 1.1.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 (386) hide show
  1. package/dist/array/index.d.ts.map +1 -0
  2. package/dist/{types/array/index.d.ts → array/index.esm.js} +0 -1
  3. package/dist/array/index.js +2 -0
  4. package/dist/array/index.js.map +1 -0
  5. package/dist/array/shuffle.d.ts.map +1 -0
  6. package/dist/{cjs/array → array}/shuffle.js +1 -5
  7. package/dist/array/shuffle.js.map +1 -0
  8. package/dist/array/unique.d.ts.map +1 -0
  9. package/dist/array/unique.js +3 -0
  10. package/dist/array/unique.js.map +1 -0
  11. package/dist/date/dayjs.d.ts.map +1 -0
  12. package/dist/date/dayjs.js +14 -0
  13. package/dist/date/dayjs.js.map +1 -0
  14. package/dist/date/fix-timezone-offset.d.ts.map +1 -0
  15. package/dist/date/fix-timezone-offset.esm.js +5 -0
  16. package/dist/{esm/date → date}/fix-timezone-offset.js +1 -1
  17. package/dist/date/fix-timezone-offset.js.map +1 -0
  18. package/dist/date/format-date.d.ts.map +1 -0
  19. package/dist/{cjs/date → date}/format-date.js +1 -5
  20. package/dist/date/format-date.js.map +1 -0
  21. package/dist/date/get-current-date-in-utc.d.ts.map +1 -0
  22. package/dist/date/get-current-date-in-utc.esm.js +4 -0
  23. package/dist/{esm/date → date}/get-current-date-in-utc.js +1 -1
  24. package/dist/date/get-current-date-in-utc.js.map +1 -0
  25. package/dist/date/get-date-in-utc.d.ts.map +1 -0
  26. package/dist/date/get-date-in-utc.esm.js +4 -0
  27. package/dist/{esm/date → date}/get-date-in-utc.js +1 -1
  28. package/dist/date/get-date-in-utc.js.map +1 -0
  29. package/dist/date/index.d.ts.map +1 -0
  30. package/dist/{types/date/index.d.ts → date/index.esm.js} +0 -1
  31. package/dist/date/index.js +6 -0
  32. package/dist/date/index.js.map +1 -0
  33. package/dist/date/parse-time-spent.d.ts.map +1 -0
  34. package/dist/{cjs/date/parse-time-spent.js → date/parse-time-spent.esm.js} +4 -8
  35. package/dist/{esm/date → date}/parse-time-spent.js +1 -1
  36. package/dist/date/parse-time-spent.js.map +1 -0
  37. package/dist/files/compress-image.d.ts.map +1 -0
  38. package/dist/{cjs/files → files}/compress-image.js +1 -5
  39. package/dist/files/compress-image.js.map +1 -0
  40. package/dist/files/download-url.d.ts.map +1 -0
  41. package/dist/{cjs/files → files}/download-url.js +1 -6
  42. package/dist/files/download-url.js.map +1 -0
  43. package/dist/files/file-delete.d.ts.map +1 -0
  44. package/dist/files/file-delete.esm.js +12 -0
  45. package/dist/{esm/files → files}/file-delete.js +1 -1
  46. package/dist/files/file-delete.js.map +1 -0
  47. package/dist/files/file-exists.d.ts.map +1 -0
  48. package/dist/files/file-exists.js +10 -0
  49. package/dist/files/file-exists.js.map +1 -0
  50. package/dist/files/format-bytes.d.ts.map +1 -0
  51. package/dist/{cjs/files → files}/format-bytes.js +1 -5
  52. package/dist/files/format-bytes.js.map +1 -0
  53. package/dist/files/index.d.ts.map +1 -0
  54. package/dist/{types/files/index.d.ts → files/index.esm.js} +0 -1
  55. package/dist/files/index.js +5 -0
  56. package/dist/files/index.js.map +1 -0
  57. package/dist/function/debounce.d.ts.map +1 -0
  58. package/dist/{cjs/function → function}/debounce.js +1 -5
  59. package/dist/function/debounce.js.map +1 -0
  60. package/dist/function/index.d.ts.map +1 -0
  61. package/dist/{types/function/index.d.ts → function/index.esm.js} +0 -1
  62. package/dist/function/index.js +3 -0
  63. package/dist/function/index.js.map +1 -0
  64. package/dist/function/throttle.d.ts.map +1 -0
  65. package/dist/{cjs/function → function}/throttle.js +1 -5
  66. package/dist/function/throttle.js.map +1 -0
  67. package/dist/function/try-catch.d.ts.map +1 -0
  68. package/dist/{cjs/function → function}/try-catch.js +1 -5
  69. package/dist/function/try-catch.js.map +1 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +6 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/string/camel-case.d.ts.map +1 -0
  74. package/dist/{cjs/string → string}/camel-case.js +1 -5
  75. package/dist/string/camel-case.js.map +1 -0
  76. package/dist/string/capitalize.d.ts.map +1 -0
  77. package/dist/{cjs/string → string}/capitalize.js +1 -5
  78. package/dist/string/capitalize.js.map +1 -0
  79. package/dist/string/format-hms-to-seconds.d.ts.map +1 -0
  80. package/dist/{cjs/string → string}/format-hms-to-seconds.js +1 -6
  81. package/dist/string/format-hms-to-seconds.js.map +1 -0
  82. package/dist/string/format-seconds-to-fragment.d.ts.map +1 -0
  83. package/dist/{cjs/string → string}/format-seconds-to-fragment.js +1 -6
  84. package/dist/string/format-seconds-to-fragment.js.map +1 -0
  85. package/dist/string/format-seconds-to-hms.d.ts.map +1 -0
  86. package/dist/{cjs/string → string}/format-seconds-to-hms.js +1 -5
  87. package/dist/string/format-seconds-to-hms.js.map +1 -0
  88. package/dist/string/format-string-to-time.d.ts.map +1 -0
  89. package/dist/{cjs/string → string}/format-string-to-time.js +1 -6
  90. package/dist/string/format-string-to-time.js.map +1 -0
  91. package/dist/string/index.d.ts.map +1 -0
  92. package/dist/{types/string/index.d.ts → string/index.esm.js} +0 -1
  93. package/dist/string/index.js +13 -0
  94. package/dist/string/index.js.map +1 -0
  95. package/dist/string/kebab-case.d.ts.map +1 -0
  96. package/dist/{cjs/string → string}/kebab-case.js +1 -5
  97. package/dist/string/kebab-case.js.map +1 -0
  98. package/dist/string/markdown-to-text.d.ts.map +1 -0
  99. package/dist/{cjs/string → string}/markdown-to-text.js +1 -5
  100. package/dist/string/markdown-to-text.js.map +1 -0
  101. package/dist/string/remove-html-tags.d.ts.map +1 -0
  102. package/dist/{cjs/string → string}/remove-html-tags.js +1 -5
  103. package/dist/string/remove-html-tags.js.map +1 -0
  104. package/dist/string/slugify.d.ts.map +1 -0
  105. package/dist/{cjs/string → string}/slugify.js +1 -5
  106. package/dist/string/slugify.js.map +1 -0
  107. package/dist/string/snake-case.d.ts.map +1 -0
  108. package/dist/{cjs/string → string}/snake-case.js +1 -5
  109. package/dist/string/snake-case.js.map +1 -0
  110. package/dist/string/to-sentence-case.d.ts.map +1 -0
  111. package/dist/{cjs/string → string}/to-sentence-case.js +1 -5
  112. package/dist/string/to-sentence-case.js.map +1 -0
  113. package/dist/string/truncate.d.ts.map +1 -0
  114. package/dist/{cjs/string → string}/truncate.js +1 -5
  115. package/dist/string/truncate.js.map +1 -0
  116. package/dist/youtube/extract-youtube-video-id.d.ts.map +1 -0
  117. package/dist/{cjs/youtube → youtube}/extract-youtube-video-id.js +1 -5
  118. package/dist/youtube/extract-youtube-video-id.js.map +1 -0
  119. package/dist/youtube/generate-youtube-url.d.ts.map +1 -0
  120. package/dist/{cjs/youtube/generate-youtube-url.js → youtube/generate-youtube-url.esm.js} +7 -12
  121. package/dist/{esm/youtube → youtube}/generate-youtube-url.js +2 -2
  122. package/dist/youtube/generate-youtube-url.js.map +1 -0
  123. package/dist/youtube/get-youtube-thumbnail.d.ts.map +1 -0
  124. package/dist/youtube/get-youtube-thumbnail.esm.js +31 -0
  125. package/dist/{esm/youtube → youtube}/get-youtube-thumbnail.js +1 -1
  126. package/dist/youtube/get-youtube-thumbnail.js.map +1 -0
  127. package/dist/youtube/index.d.ts.map +1 -0
  128. package/dist/{types/youtube/index.d.ts → youtube/index.esm.js} +0 -1
  129. package/dist/youtube/index.js +5 -0
  130. package/dist/youtube/index.js.map +1 -0
  131. package/dist/youtube/use-get-video-duration.d.ts.map +1 -0
  132. package/dist/{cjs/youtube/use-get-video-duration.js → youtube/use-get-video-duration.esm.js} +10 -14
  133. package/dist/{esm/youtube → youtube}/use-get-video-duration.js +3 -3
  134. package/dist/youtube/use-get-video-duration.js.map +1 -0
  135. package/dist/youtube/validate-youtube-link.d.ts.map +1 -0
  136. package/dist/youtube/validate-youtube-link.esm.js +40 -0
  137. package/dist/{esm/youtube → youtube}/validate-youtube-link.js +1 -1
  138. package/dist/youtube/validate-youtube-link.js.map +1 -0
  139. package/package.json +36 -11
  140. package/dist/cjs/array/index.d.ts.map +0 -1
  141. package/dist/cjs/array/index.js +0 -19
  142. package/dist/cjs/array/index.js.map +0 -1
  143. package/dist/cjs/array/shuffle.d.ts.map +0 -1
  144. package/dist/cjs/array/shuffle.js.map +0 -1
  145. package/dist/cjs/array/unique.d.ts.map +0 -1
  146. package/dist/cjs/array/unique.js +0 -7
  147. package/dist/cjs/array/unique.js.map +0 -1
  148. package/dist/cjs/date/dayjs.d.ts.map +0 -1
  149. package/dist/cjs/date/dayjs.js +0 -21
  150. package/dist/cjs/date/dayjs.js.map +0 -1
  151. package/dist/cjs/date/fix-timezone-offset.d.ts.map +0 -1
  152. package/dist/cjs/date/fix-timezone-offset.js +0 -9
  153. package/dist/cjs/date/fix-timezone-offset.js.map +0 -1
  154. package/dist/cjs/date/format-date.d.ts.map +0 -1
  155. package/dist/cjs/date/format-date.js.map +0 -1
  156. package/dist/cjs/date/get-current-date-in-utc.d.ts.map +0 -1
  157. package/dist/cjs/date/get-current-date-in-utc.js +0 -8
  158. package/dist/cjs/date/get-current-date-in-utc.js.map +0 -1
  159. package/dist/cjs/date/get-date-in-utc.d.ts.map +0 -1
  160. package/dist/cjs/date/get-date-in-utc.js +0 -8
  161. package/dist/cjs/date/get-date-in-utc.js.map +0 -1
  162. package/dist/cjs/date/index.d.ts.map +0 -1
  163. package/dist/cjs/date/index.js +0 -23
  164. package/dist/cjs/date/index.js.map +0 -1
  165. package/dist/cjs/date/parse-time-spent.d.ts.map +0 -1
  166. package/dist/cjs/date/parse-time-spent.js.map +0 -1
  167. package/dist/cjs/files/compress-image.d.ts.map +0 -1
  168. package/dist/cjs/files/compress-image.js.map +0 -1
  169. package/dist/cjs/files/download-url.d.ts.map +0 -1
  170. package/dist/cjs/files/download-url.js.map +0 -1
  171. package/dist/cjs/files/file-delete.d.ts.map +0 -1
  172. package/dist/cjs/files/file-delete.js +0 -20
  173. package/dist/cjs/files/file-delete.js.map +0 -1
  174. package/dist/cjs/files/file-exists.d.ts.map +0 -1
  175. package/dist/cjs/files/file-exists.js +0 -18
  176. package/dist/cjs/files/file-exists.js.map +0 -1
  177. package/dist/cjs/files/format-bytes.d.ts.map +0 -1
  178. package/dist/cjs/files/format-bytes.js.map +0 -1
  179. package/dist/cjs/files/index.d.ts.map +0 -1
  180. package/dist/cjs/files/index.js +0 -22
  181. package/dist/cjs/files/index.js.map +0 -1
  182. package/dist/cjs/function/debounce.d.ts.map +0 -1
  183. package/dist/cjs/function/debounce.js.map +0 -1
  184. package/dist/cjs/function/index.d.ts.map +0 -1
  185. package/dist/cjs/function/index.js +0 -20
  186. package/dist/cjs/function/index.js.map +0 -1
  187. package/dist/cjs/function/throttle.d.ts.map +0 -1
  188. package/dist/cjs/function/throttle.js.map +0 -1
  189. package/dist/cjs/function/try-catch.d.ts.map +0 -1
  190. package/dist/cjs/function/try-catch.js.map +0 -1
  191. package/dist/cjs/index.d.ts.map +0 -1
  192. package/dist/cjs/index.js +0 -23
  193. package/dist/cjs/index.js.map +0 -1
  194. package/dist/cjs/string/camel-case.d.ts.map +0 -1
  195. package/dist/cjs/string/camel-case.js.map +0 -1
  196. package/dist/cjs/string/capitalize.d.ts.map +0 -1
  197. package/dist/cjs/string/capitalize.js.map +0 -1
  198. package/dist/cjs/string/format-hms-to-seconds.d.ts.map +0 -1
  199. package/dist/cjs/string/format-hms-to-seconds.js.map +0 -1
  200. package/dist/cjs/string/format-seconds-to-fragment.d.ts.map +0 -1
  201. package/dist/cjs/string/format-seconds-to-fragment.js.map +0 -1
  202. package/dist/cjs/string/format-seconds-to-hms.d.ts.map +0 -1
  203. package/dist/cjs/string/format-seconds-to-hms.js.map +0 -1
  204. package/dist/cjs/string/format-string-to-time.d.ts.map +0 -1
  205. package/dist/cjs/string/format-string-to-time.js.map +0 -1
  206. package/dist/cjs/string/index.d.ts.map +0 -1
  207. package/dist/cjs/string/index.js +0 -30
  208. package/dist/cjs/string/index.js.map +0 -1
  209. package/dist/cjs/string/kebab-case.d.ts.map +0 -1
  210. package/dist/cjs/string/kebab-case.js.map +0 -1
  211. package/dist/cjs/string/markdown-to-text.d.ts.map +0 -1
  212. package/dist/cjs/string/markdown-to-text.js.map +0 -1
  213. package/dist/cjs/string/remove-html-tags.d.ts.map +0 -1
  214. package/dist/cjs/string/remove-html-tags.js.map +0 -1
  215. package/dist/cjs/string/slugify.d.ts.map +0 -1
  216. package/dist/cjs/string/slugify.js.map +0 -1
  217. package/dist/cjs/string/snake-case.d.ts.map +0 -1
  218. package/dist/cjs/string/snake-case.js.map +0 -1
  219. package/dist/cjs/string/to-sentence-case.d.ts.map +0 -1
  220. package/dist/cjs/string/to-sentence-case.js.map +0 -1
  221. package/dist/cjs/string/truncate.d.ts.map +0 -1
  222. package/dist/cjs/string/truncate.js.map +0 -1
  223. package/dist/cjs/youtube/extract-youtube-video-id.d.ts.map +0 -1
  224. package/dist/cjs/youtube/extract-youtube-video-id.js.map +0 -1
  225. package/dist/cjs/youtube/generate-youtube-url.d.ts.map +0 -1
  226. package/dist/cjs/youtube/generate-youtube-url.js.map +0 -1
  227. package/dist/cjs/youtube/get-youtube-thumbnail.d.ts.map +0 -1
  228. package/dist/cjs/youtube/get-youtube-thumbnail.js +0 -68
  229. package/dist/cjs/youtube/get-youtube-thumbnail.js.map +0 -1
  230. package/dist/cjs/youtube/index.d.ts.map +0 -1
  231. package/dist/cjs/youtube/index.js +0 -22
  232. package/dist/cjs/youtube/index.js.map +0 -1
  233. package/dist/cjs/youtube/use-get-video-duration.d.ts.map +0 -1
  234. package/dist/cjs/youtube/use-get-video-duration.js.map +0 -1
  235. package/dist/cjs/youtube/validate-youtube-link.d.ts.map +0 -1
  236. package/dist/cjs/youtube/validate-youtube-link.js +0 -77
  237. package/dist/cjs/youtube/validate-youtube-link.js.map +0 -1
  238. package/dist/esm/array/index.js +0 -2
  239. package/dist/esm/date/index.js +0 -6
  240. package/dist/esm/files/index.js +0 -5
  241. package/dist/esm/function/index.js +0 -3
  242. package/dist/esm/string/index.js +0 -13
  243. package/dist/esm/youtube/index.js +0 -5
  244. package/dist/types/array/index.d.ts.map +0 -1
  245. package/dist/types/array/shuffle.d.ts +0 -2
  246. package/dist/types/array/shuffle.d.ts.map +0 -1
  247. package/dist/types/array/unique.d.ts +0 -2
  248. package/dist/types/array/unique.d.ts.map +0 -1
  249. package/dist/types/date/dayjs.d.ts +0 -3
  250. package/dist/types/date/dayjs.d.ts.map +0 -1
  251. package/dist/types/date/fix-timezone-offset.d.ts +0 -3
  252. package/dist/types/date/fix-timezone-offset.d.ts.map +0 -1
  253. package/dist/types/date/format-date.d.ts +0 -2
  254. package/dist/types/date/format-date.d.ts.map +0 -1
  255. package/dist/types/date/get-current-date-in-utc.d.ts +0 -3
  256. package/dist/types/date/get-current-date-in-utc.d.ts.map +0 -1
  257. package/dist/types/date/get-date-in-utc.d.ts +0 -3
  258. package/dist/types/date/get-date-in-utc.d.ts.map +0 -1
  259. package/dist/types/date/index.d.ts.map +0 -1
  260. package/dist/types/date/parse-time-spent.d.ts +0 -15
  261. package/dist/types/date/parse-time-spent.d.ts.map +0 -1
  262. package/dist/types/files/compress-image.d.ts +0 -10
  263. package/dist/types/files/compress-image.d.ts.map +0 -1
  264. package/dist/types/files/download-url.d.ts +0 -2
  265. package/dist/types/files/download-url.d.ts.map +0 -1
  266. package/dist/types/files/file-delete.d.ts +0 -2
  267. package/dist/types/files/file-delete.d.ts.map +0 -1
  268. package/dist/types/files/file-exists.d.ts +0 -2
  269. package/dist/types/files/file-exists.d.ts.map +0 -1
  270. package/dist/types/files/format-bytes.d.ts +0 -2
  271. package/dist/types/files/format-bytes.d.ts.map +0 -1
  272. package/dist/types/files/index.d.ts.map +0 -1
  273. package/dist/types/function/debounce.d.ts +0 -11
  274. package/dist/types/function/debounce.d.ts.map +0 -1
  275. package/dist/types/function/index.d.ts.map +0 -1
  276. package/dist/types/function/throttle.d.ts +0 -10
  277. package/dist/types/function/throttle.d.ts.map +0 -1
  278. package/dist/types/function/try-catch.d.ts +0 -32
  279. package/dist/types/function/try-catch.d.ts.map +0 -1
  280. package/dist/types/index.d.ts +0 -7
  281. package/dist/types/index.d.ts.map +0 -1
  282. package/dist/types/string/camel-case.d.ts +0 -2
  283. package/dist/types/string/camel-case.d.ts.map +0 -1
  284. package/dist/types/string/capitalize.d.ts +0 -2
  285. package/dist/types/string/capitalize.d.ts.map +0 -1
  286. package/dist/types/string/format-hms-to-seconds.d.ts +0 -2
  287. package/dist/types/string/format-hms-to-seconds.d.ts.map +0 -1
  288. package/dist/types/string/format-seconds-to-fragment.d.ts +0 -3
  289. package/dist/types/string/format-seconds-to-fragment.d.ts.map +0 -1
  290. package/dist/types/string/format-seconds-to-hms.d.ts +0 -2
  291. package/dist/types/string/format-seconds-to-hms.d.ts.map +0 -1
  292. package/dist/types/string/format-string-to-time.d.ts +0 -2
  293. package/dist/types/string/format-string-to-time.d.ts.map +0 -1
  294. package/dist/types/string/index.d.ts.map +0 -1
  295. package/dist/types/string/kebab-case.d.ts +0 -2
  296. package/dist/types/string/kebab-case.d.ts.map +0 -1
  297. package/dist/types/string/markdown-to-text.d.ts +0 -2
  298. package/dist/types/string/markdown-to-text.d.ts.map +0 -1
  299. package/dist/types/string/remove-html-tags.d.ts +0 -2
  300. package/dist/types/string/remove-html-tags.d.ts.map +0 -1
  301. package/dist/types/string/slugify.d.ts +0 -2
  302. package/dist/types/string/slugify.d.ts.map +0 -1
  303. package/dist/types/string/snake-case.d.ts +0 -2
  304. package/dist/types/string/snake-case.d.ts.map +0 -1
  305. package/dist/types/string/to-sentence-case.d.ts +0 -2
  306. package/dist/types/string/to-sentence-case.d.ts.map +0 -1
  307. package/dist/types/string/truncate.d.ts +0 -2
  308. package/dist/types/string/truncate.d.ts.map +0 -1
  309. package/dist/types/youtube/extract-youtube-video-id.d.ts +0 -2
  310. package/dist/types/youtube/extract-youtube-video-id.d.ts.map +0 -1
  311. package/dist/types/youtube/generate-youtube-url.d.ts +0 -20
  312. package/dist/types/youtube/generate-youtube-url.d.ts.map +0 -1
  313. package/dist/types/youtube/get-youtube-thumbnail.d.ts +0 -2
  314. package/dist/types/youtube/get-youtube-thumbnail.d.ts.map +0 -1
  315. package/dist/types/youtube/index.d.ts.map +0 -1
  316. package/dist/types/youtube/use-get-video-duration.d.ts +0 -7
  317. package/dist/types/youtube/use-get-video-duration.d.ts.map +0 -1
  318. package/dist/types/youtube/validate-youtube-link.d.ts +0 -2
  319. package/dist/types/youtube/validate-youtube-link.d.ts.map +0 -1
  320. /package/dist/{cjs/array → array}/index.d.ts +0 -0
  321. /package/dist/{cjs/array → array}/shuffle.d.ts +0 -0
  322. /package/dist/{esm/array/shuffle.js → array/shuffle.esm.js} +0 -0
  323. /package/dist/{cjs/array → array}/unique.d.ts +0 -0
  324. /package/dist/{esm/array/unique.js → array/unique.esm.js} +0 -0
  325. /package/dist/{cjs/date → date}/dayjs.d.ts +0 -0
  326. /package/dist/{esm/date/dayjs.js → date/dayjs.esm.js} +0 -0
  327. /package/dist/{cjs/date → date}/fix-timezone-offset.d.ts +0 -0
  328. /package/dist/{cjs/date → date}/format-date.d.ts +0 -0
  329. /package/dist/{esm/date/format-date.js → date/format-date.esm.js} +0 -0
  330. /package/dist/{cjs/date → date}/get-current-date-in-utc.d.ts +0 -0
  331. /package/dist/{cjs/date → date}/get-date-in-utc.d.ts +0 -0
  332. /package/dist/{cjs/date → date}/index.d.ts +0 -0
  333. /package/dist/{cjs/date → date}/parse-time-spent.d.ts +0 -0
  334. /package/dist/{cjs/files → files}/compress-image.d.ts +0 -0
  335. /package/dist/{esm/files/compress-image.js → files/compress-image.esm.js} +0 -0
  336. /package/dist/{cjs/files → files}/download-url.d.ts +0 -0
  337. /package/dist/{esm/files/download-url.js → files/download-url.esm.js} +0 -0
  338. /package/dist/{cjs/files → files}/file-delete.d.ts +0 -0
  339. /package/dist/{cjs/files → files}/file-exists.d.ts +0 -0
  340. /package/dist/{esm/files/file-exists.js → files/file-exists.esm.js} +0 -0
  341. /package/dist/{cjs/files → files}/format-bytes.d.ts +0 -0
  342. /package/dist/{esm/files/format-bytes.js → files/format-bytes.esm.js} +0 -0
  343. /package/dist/{cjs/files → files}/index.d.ts +0 -0
  344. /package/dist/{cjs/function → function}/debounce.d.ts +0 -0
  345. /package/dist/{esm/function/debounce.js → function/debounce.esm.js} +0 -0
  346. /package/dist/{cjs/function → function}/index.d.ts +0 -0
  347. /package/dist/{cjs/function → function}/throttle.d.ts +0 -0
  348. /package/dist/{esm/function/throttle.js → function/throttle.esm.js} +0 -0
  349. /package/dist/{cjs/function → function}/try-catch.d.ts +0 -0
  350. /package/dist/{esm/function/try-catch.js → function/try-catch.esm.js} +0 -0
  351. /package/dist/{cjs/index.d.ts → index.d.ts} +0 -0
  352. /package/dist/{esm/index.js → index.esm.js} +0 -0
  353. /package/dist/{cjs/string → string}/camel-case.d.ts +0 -0
  354. /package/dist/{esm/string/camel-case.js → string/camel-case.esm.js} +0 -0
  355. /package/dist/{cjs/string → string}/capitalize.d.ts +0 -0
  356. /package/dist/{esm/string/capitalize.js → string/capitalize.esm.js} +0 -0
  357. /package/dist/{cjs/string → string}/format-hms-to-seconds.d.ts +0 -0
  358. /package/dist/{esm/string/format-hms-to-seconds.js → string/format-hms-to-seconds.esm.js} +0 -0
  359. /package/dist/{cjs/string → string}/format-seconds-to-fragment.d.ts +0 -0
  360. /package/dist/{esm/string/format-seconds-to-fragment.js → string/format-seconds-to-fragment.esm.js} +0 -0
  361. /package/dist/{cjs/string → string}/format-seconds-to-hms.d.ts +0 -0
  362. /package/dist/{esm/string/format-seconds-to-hms.js → string/format-seconds-to-hms.esm.js} +0 -0
  363. /package/dist/{cjs/string → string}/format-string-to-time.d.ts +0 -0
  364. /package/dist/{esm/string/format-string-to-time.js → string/format-string-to-time.esm.js} +0 -0
  365. /package/dist/{cjs/string → string}/index.d.ts +0 -0
  366. /package/dist/{cjs/string → string}/kebab-case.d.ts +0 -0
  367. /package/dist/{esm/string/kebab-case.js → string/kebab-case.esm.js} +0 -0
  368. /package/dist/{cjs/string → string}/markdown-to-text.d.ts +0 -0
  369. /package/dist/{esm/string/markdown-to-text.js → string/markdown-to-text.esm.js} +0 -0
  370. /package/dist/{cjs/string → string}/remove-html-tags.d.ts +0 -0
  371. /package/dist/{esm/string/remove-html-tags.js → string/remove-html-tags.esm.js} +0 -0
  372. /package/dist/{cjs/string → string}/slugify.d.ts +0 -0
  373. /package/dist/{esm/string/slugify.js → string/slugify.esm.js} +0 -0
  374. /package/dist/{cjs/string → string}/snake-case.d.ts +0 -0
  375. /package/dist/{esm/string/snake-case.js → string/snake-case.esm.js} +0 -0
  376. /package/dist/{cjs/string → string}/to-sentence-case.d.ts +0 -0
  377. /package/dist/{esm/string/to-sentence-case.js → string/to-sentence-case.esm.js} +0 -0
  378. /package/dist/{cjs/string → string}/truncate.d.ts +0 -0
  379. /package/dist/{esm/string/truncate.js → string/truncate.esm.js} +0 -0
  380. /package/dist/{cjs/youtube → youtube}/extract-youtube-video-id.d.ts +0 -0
  381. /package/dist/{esm/youtube/extract-youtube-video-id.js → youtube/extract-youtube-video-id.esm.js} +0 -0
  382. /package/dist/{cjs/youtube → youtube}/generate-youtube-url.d.ts +0 -0
  383. /package/dist/{cjs/youtube → youtube}/get-youtube-thumbnail.d.ts +0 -0
  384. /package/dist/{cjs/youtube → youtube}/index.d.ts +0 -0
  385. /package/dist/{cjs/youtube → youtube}/use-get-video-duration.d.ts +0 -0
  386. /package/dist/{cjs/youtube → youtube}/validate-youtube-link.d.ts +0 -0
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatSecondsToFragment = void 0;
4
1
  /** convert seconds to "1h2m3s" or "42s" style for fragment */
5
- const formatSecondsToFragment = (secs) => {
2
+ export const formatSecondsToFragment = (secs) => {
6
3
  const parsedSecs = Math.max(0, Math.floor(secs));
7
4
  const h = Math.floor(parsedSecs / 3600);
8
5
  const m = Math.floor((parsedSecs % 3600) / 60);
@@ -16,5 +13,3 @@ const formatSecondsToFragment = (secs) => {
16
13
  out += `${s}s`;
17
14
  return out;
18
15
  };
19
- exports.formatSecondsToFragment = formatSecondsToFragment;
20
- //# sourceMappingURL=format-seconds-to-fragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-seconds-to-fragment.js","sourceRoot":"","sources":["../../src/string/format-seconds-to-fragment.ts"],"names":[],"mappings":";;;AAAA,8DAA8D;AACvD,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAU,EAAE;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAChD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;IACvC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAC9C,MAAM,CAAC,GAAG,UAAU,GAAG,EAAE,CAAA;IACzB,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,IAAI,CAAC,GAAG,CAAC;QAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAA;IACzB,IAAI,CAAC,GAAG,CAAC;QAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAA;IACzB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE;QAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAA;IACvC,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAVY,QAAA,uBAAuB,2BAUnC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-seconds-to-hms.d.ts","sourceRoot":"","sources":["../../src/string/format-seconds-to-hms.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAc/D"}
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatSecondsToHMS = formatSecondsToHMS;
4
- function formatSecondsToHMS(totalSeconds) {
1
+ export function formatSecondsToHMS(totalSeconds) {
5
2
  const rounded = Math.max(0, Math.round(totalSeconds));
6
3
  const hours = Math.floor(rounded / 3600);
7
4
  const minutes = Math.floor((rounded % 3600) / 60);
@@ -14,4 +11,3 @@ function formatSecondsToHMS(totalSeconds) {
14
11
  }
15
12
  return `${hh}:${mm}:${ss}`;
16
13
  }
17
- //# sourceMappingURL=format-seconds-to-hms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-seconds-to-hms.js","sourceRoot":"","sources":["../../src/string/format-seconds-to-hms.ts"],"names":[],"mappings":";;AAAA,gDAcC;AAdD,SAAgB,kBAAkB,CAAC,YAAoB;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,OAAO,GAAG,EAAE,CAAA;IAC5B,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACzC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC3C,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAE3C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,CAAA;IACtB,CAAC;IAED,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAA;AAC5B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-string-to-time.d.ts","sourceRoot":"","sources":["../../src/string/format-string-to-time.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,WAU7C,CAAA"}
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatStringToTime = void 0;
4
- const formatStringToTime = (str) => {
1
+ export const formatStringToTime = (str) => {
5
2
  const stringCleaned = Number(str.replace(/\D/g, "")).toString();
6
3
  if (stringCleaned.length > 4) {
7
4
  return stringCleaned
@@ -11,5 +8,3 @@ const formatStringToTime = (str) => {
11
8
  }
12
9
  return stringCleaned.padStart(4, "0").replace(/(\d{2})(\d{2})/, "$1:$2");
13
10
  };
14
- exports.formatStringToTime = formatStringToTime;
15
- //# sourceMappingURL=format-string-to-time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-string-to-time.js","sourceRoot":"","sources":["../../src/string/format-string-to-time.ts"],"names":[],"mappings":";;;AAAO,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE;IAChD,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC/D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,aAAa;aACjB,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;aAChB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,OAAO,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;AAC1E,CAAC,CAAA;AAVY,QAAA,kBAAkB,sBAU9B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/string/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,yBAAyB,CAAA;AACvC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA"}
@@ -11,4 +11,3 @@ export * from "./slugify";
11
11
  export * from "./snake-case";
12
12
  export * from "./to-sentence-case";
13
13
  export * from "./truncate";
14
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,13 @@
1
+ export * from "./camel-case";
2
+ export * from "./capitalize";
3
+ export * from "./format-hms-to-seconds";
4
+ export * from "./format-seconds-to-fragment";
5
+ export * from "./format-seconds-to-hms";
6
+ export * from "./format-string-to-time";
7
+ export * from "./kebab-case";
8
+ export * from "./markdown-to-text";
9
+ export * from "./remove-html-tags";
10
+ export * from "./slugify";
11
+ export * from "./snake-case";
12
+ export * from "./to-sentence-case";
13
+ export * from "./truncate";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/string/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,+CAA4B;AAC5B,0DAAuC;AACvC,+DAA4C;AAC5C,0DAAuC;AACvC,0DAAuC;AACvC,+CAA4B;AAC5B,qDAAkC;AAClC,qDAAkC;AAClC,4CAAyB;AACzB,+CAA4B;AAC5B,qDAAkC;AAClC,6CAA0B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kebab-case.d.ts","sourceRoot":"","sources":["../../src/string/kebab-case.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW7C"}
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.kebabCase = kebabCase;
4
- function kebabCase(str) {
1
+ export function kebabCase(str) {
5
2
  if (typeof str !== "string") {
6
3
  throw new Error("Input must be a string");
7
4
  }
@@ -12,4 +9,3 @@ function kebabCase(str) {
12
9
  .toLowerCase()
13
10
  .replace(/^-+|-+$/g, "");
14
11
  }
15
- //# sourceMappingURL=kebab-case.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
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,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.markdownToText = markdownToText;
4
- function markdownToText(markdown) {
1
+ export function markdownToText(markdown) {
5
2
  if (!markdown)
6
3
  return "";
7
4
  // normalize newlines
@@ -67,4 +64,3 @@ function markdownToText(markdown) {
67
64
  // Final trim but preserve leading/trailing single newlines inside content as needed
68
65
  return text.trim();
69
66
  }
70
- //# sourceMappingURL=markdown-to-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-to-text.js","sourceRoot":"","sources":["../../src/string/markdown-to-text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
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,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeHtmlTags = removeHtmlTags;
4
- function removeHtmlTags(input) {
1
+ export function removeHtmlTags(input) {
5
2
  // Input validation
6
3
  if (!input || typeof input !== "string") {
7
4
  return "";
@@ -15,4 +12,3 @@ function removeHtmlTags(input) {
15
12
  // Use a non-backtracking approach to prevent ReDoS vulnerabilities
16
13
  return updatedInput.replace(/<(?:[^>"']|"[^"]*"|'[^']*')*>/g, "");
17
14
  }
18
- //# sourceMappingURL=remove-html-tags.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
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,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.slugify = slugify;
4
- function slugify(text) {
1
+ export function slugify(text) {
5
2
  return text
6
3
  .normalize("NFD")
7
4
  .replace(/[\u0300-\u036f]/g, "")
@@ -10,4 +7,3 @@ function slugify(text) {
10
7
  .replace(/\s+/g, "-")
11
8
  .toLowerCase();
12
9
  }
13
- //# sourceMappingURL=slugify.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
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,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.snakeCase = snakeCase;
4
- function snakeCase(str) {
1
+ export function snakeCase(str) {
5
2
  if (typeof str !== "string") {
6
3
  throw new Error("Input must be a string");
7
4
  }
@@ -12,4 +9,3 @@ function snakeCase(str) {
12
9
  .toLowerCase()
13
10
  .replace(/^_+|_+$/g, "");
14
11
  }
15
- //# sourceMappingURL=snake-case.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
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,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toSentenceCase = toSentenceCase;
4
- function toSentenceCase(str) {
1
+ export function toSentenceCase(str) {
5
2
  return str
6
3
  .replace(/_/g, " ")
7
4
  .replace(/([A-Z])/g, " $1")
@@ -10,4 +7,3 @@ function toSentenceCase(str) {
10
7
  .replace(/\s+/g, " ")
11
8
  .trim();
12
9
  }
13
- //# sourceMappingURL=to-sentence-case.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
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,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.truncate = truncate;
4
- function truncate(str, length, suffix = "...") {
1
+ export function truncate(str, length, suffix = "...") {
5
2
  if (typeof str !== "string") {
6
3
  throw new Error("Input must be a string");
7
4
  }
@@ -16,4 +13,3 @@ function truncate(str, length, suffix = "...") {
16
13
  }
17
14
  return str.slice(0, Math.max(0, length - suffix.length)) + suffix;
18
15
  }
19
- //# sourceMappingURL=truncate.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
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,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractYouTubeId = extractYouTubeId;
4
- function extractYouTubeId(urlString) {
1
+ export function extractYouTubeId(urlString) {
5
2
  if (!urlString)
6
3
  return null;
7
4
  try {
@@ -27,4 +24,3 @@ function extractYouTubeId(urlString) {
27
24
  const match = urlString.match(regex);
28
25
  return match ? match[1] : null;
29
26
  }
30
- //# sourceMappingURL=extract-youtube-video-id.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1 @@
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,15 +1,12 @@
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) => {
1
+ import { formatHMSToSeconds, formatSecondsToFragment } from "../string";
2
+ import { extractYouTubeId } from "./extract-youtube-video-id";
3
+ export const generateYoutubeURL = (opts) => {
7
4
  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);
5
+ const videoId = extractYouTubeId(videoURL);
9
6
  if (!videoId)
10
7
  return null;
11
- const startSec = (0, string_1.formatHMSToSeconds)(start);
12
- const endSec = (0, string_1.formatHMSToSeconds)(end);
8
+ const startSec = formatHMSToSeconds(start);
9
+ const endSec = formatHMSToSeconds(end);
13
10
  // base url
14
11
  const base = embed
15
12
  ? `https://www.youtube.com/embed/${videoId}`
@@ -72,7 +69,7 @@ const generateYoutubeURL = (opts) => {
72
69
  // fragment handling (e.g. #t=1m2s)
73
70
  let fragment = "";
74
71
  if (useFragment && startSec != null) {
75
- fragment = `#t=${(0, string_1.formatSecondsToFragment)(startSec)}`;
72
+ fragment = `#t=${formatSecondsToFragment(startSec)}`;
76
73
  }
77
74
  // For short links, people often prefer the short host and start as query or fragment.
78
75
  if (short) {
@@ -82,5 +79,3 @@ const generateYoutubeURL = (opts) => {
82
79
  // watch/embed links
83
80
  return `${base}${qs}${fragment}`;
84
81
  };
85
- exports.generateYoutubeURL = generateYoutubeURL;
86
- //# sourceMappingURL=generate-youtube-url.js.map
@@ -1,5 +1,5 @@
1
- import { formatHMSToSeconds, formatSecondsToFragment } from "../string/index.js";
2
- import { extractYouTubeId } from "./extract-youtube-video-id.js";
1
+ import { formatHMSToSeconds, formatSecondsToFragment } from "../string";
2
+ import { extractYouTubeId } from "./extract-youtube-video-id";
3
3
  export const generateYoutubeURL = (opts) => {
4
4
  const { videoURL, start, end, embed = false, short = false, useFragment = false, autoplay, controls, rel, loop, mute, modestbranding, origin, playlist, params = {}, } = opts;
5
5
  const videoId = extractYouTubeId(videoURL);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-youtube-url.js","sourceRoot":"","sources":["../../src/youtube/generate-youtube-url.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,31 @@
1
+ export async function getYoutubeThumbnail(videoUrl) {
2
+ const { extractYouTubeId } = await import("./extract-youtube-video-id");
3
+ const videoId = extractYouTubeId(videoUrl);
4
+ if (!videoId)
5
+ return null;
6
+ // Try loading YouTube thumbnail images — avoids CORS problems because
7
+ // creating an Image and listening for load/error is not blocked by CORS.
8
+ const thumbs = [
9
+ `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`,
10
+ `https://img.youtube.com/vi/${videoId}/hqdefault.jpg`,
11
+ `https://img.youtube.com/vi/${videoId}/mqdefault.jpg`,
12
+ `https://img.youtube.com/vi/${videoId}/default.jpg`,
13
+ ];
14
+ const loadImage = (src) => new Promise((resolve) => {
15
+ const img = new Image();
16
+ img.onload = () => resolve(true);
17
+ img.onerror = () => resolve(false);
18
+ img.src = src;
19
+ });
20
+ for (const url of thumbs) {
21
+ try {
22
+ const ok = await loadImage(url);
23
+ if (ok)
24
+ return url;
25
+ }
26
+ catch (_a) {
27
+ // ignore and try next thumbnail
28
+ }
29
+ }
30
+ return null;
31
+ }
@@ -1,5 +1,5 @@
1
1
  export async function getYoutubeThumbnail(videoUrl) {
2
- const { extractYouTubeId } = await import("./extract-youtube-video-id.js");
2
+ const { extractYouTubeId } = await import("./extract-youtube-video-id");
3
3
  const videoId = extractYouTubeId(videoUrl);
4
4
  if (!videoId)
5
5
  return null;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-youtube-thumbnail.js","sourceRoot":"","sources":["../../src/youtube/get-youtube-thumbnail.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAkCC;AAlCM,KAAK,UAAU,mBAAmB,CACvC,QAAgB;IAEhB,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,4BAA4B,GAAC,CAAA;IACvE,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC1C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,sEAAsE;IACtE,yEAAyE;IACzE,MAAM,MAAM,GAAG;QACb,8BAA8B,OAAO,oBAAoB;QACzD,8BAA8B,OAAO,gBAAgB;QACrD,8BAA8B,OAAO,gBAAgB;QACrD,8BAA8B,OAAO,cAAc;KACpD,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAChC,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAA;QACvB,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAChC,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAClC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACf,CAAC,CAAC,CAAA;IAEJ,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;YAC/B,IAAI,EAAE;gBAAE,OAAO,GAAG,CAAA;QACpB,CAAC;QAAC,WAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/youtube/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA"}
@@ -3,4 +3,3 @@ export * from "./generate-youtube-url";
3
3
  export * from "./get-youtube-thumbnail";
4
4
  export * from "./use-get-video-duration";
5
5
  export * from "./validate-youtube-link";
6
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,5 @@
1
+ export * from "./extract-youtube-video-id";
2
+ export * from "./generate-youtube-url";
3
+ export * from "./get-youtube-thumbnail";
4
+ export * from "./use-get-video-duration";
5
+ export * from "./validate-youtube-link";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/youtube/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA0C;AAC1C,yDAAsC;AACtC,0DAAuC;AACvC,2DAAwC;AACxC,0DAAuC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-get-video-duration.d.ts","sourceRoot":"","sources":["../../src/youtube/use-get-video-duration.ts"],"names":[],"mappings":"AAwCA;;;;GAIG;AACH,wBAAgB,0BAA0B,eAErB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0GnD"}
@@ -1,11 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useGetYoutubeVideoDuration = useGetYoutubeVideoDuration;
4
1
  /** biome-ignore-all lint/suspicious/noExplicitAny: Window is any */
5
- const react_1 = require("react");
6
- const string_1 = require("../string");
7
- const extract_youtube_video_id_1 = require("./extract-youtube-video-id");
8
- const validate_youtube_link_1 = require("./validate-youtube-link");
2
+ import { useCallback } from "react";
3
+ import { formatSecondsToHMS } from "../string";
4
+ import { extractYouTubeId } from "./extract-youtube-video-id";
5
+ import { validateYoutubeLink } from "./validate-youtube-link";
9
6
  let YtApiLoading = null;
10
7
  function loadYouTubeIFrameAPI() {
11
8
  var _a;
@@ -41,12 +38,12 @@ function loadYouTubeIFrameAPI() {
41
38
  * Returns a function that accepts a YouTube URL (full or short) and returns a Promise
42
39
  * resolving to the video duration formatted as "HH:MM:SS" or null on failure.
43
40
  */
44
- function useGetYoutubeVideoDuration() {
45
- const getYoutubeVideoDuration = (0, react_1.useCallback)(async (videoUrl) => {
46
- const videoId = (0, extract_youtube_video_id_1.extractYouTubeId)(videoUrl);
41
+ export function useGetYoutubeVideoDuration() {
42
+ const getYoutubeVideoDuration = useCallback(async (videoUrl) => {
43
+ const videoId = extractYouTubeId(videoUrl);
47
44
  if (!videoId)
48
45
  return null;
49
- const videoIsValid = await (0, validate_youtube_link_1.validateYoutubeLink)(videoUrl);
46
+ const videoIsValid = await validateYoutubeLink(videoUrl);
50
47
  if (!videoIsValid)
51
48
  return null;
52
49
  try {
@@ -115,7 +112,7 @@ function useGetYoutubeVideoDuration() {
115
112
  duration = e.target.getDuration();
116
113
  if (duration && duration > 0) {
117
114
  clearInterval(tryInterval);
118
- cleanupAndResolve((0, string_1.formatSecondsToHMS)(duration));
115
+ cleanupAndResolve(formatSecondsToHMS(duration));
119
116
  }
120
117
  else if (attempts >= 8) {
121
118
  clearInterval(tryInterval);
@@ -131,7 +128,7 @@ function useGetYoutubeVideoDuration() {
131
128
  }, 300);
132
129
  }
133
130
  else {
134
- cleanupAndResolve((0, string_1.formatSecondsToHMS)(duration));
131
+ cleanupAndResolve(formatSecondsToHMS(duration));
135
132
  }
136
133
  }
137
134
  catch (_a) {
@@ -151,4 +148,3 @@ function useGetYoutubeVideoDuration() {
151
148
  }, []);
152
149
  return getYoutubeVideoDuration;
153
150
  }
154
- //# sourceMappingURL=use-get-video-duration.js.map
@@ -1,8 +1,8 @@
1
1
  /** biome-ignore-all lint/suspicious/noExplicitAny: Window is any */
2
2
  import { useCallback } from "react";
3
- import { formatSecondsToHMS } from "../string/index.js";
4
- import { extractYouTubeId } from "./extract-youtube-video-id.js";
5
- import { validateYoutubeLink } from "./validate-youtube-link.js";
3
+ import { formatSecondsToHMS } from "../string";
4
+ import { extractYouTubeId } from "./extract-youtube-video-id";
5
+ import { validateYoutubeLink } from "./validate-youtube-link";
6
6
  let YtApiLoading = null;
7
7
  function loadYouTubeIFrameAPI() {
8
8
  var _a;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-get-video-duration.js","sourceRoot":"","sources":["../../src/youtube/use-get-video-duration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-youtube-link.d.ts","sourceRoot":"","sources":["../../src/youtube/validate-youtube-link.ts"],"names":[],"mappings":"AAAA,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA0C5E"}
@@ -0,0 +1,40 @@
1
+ export async function validateYoutubeLink(videoUrl) {
2
+ const { extractYouTubeId } = await import("./extract-youtube-video-id");
3
+ const videoId = extractYouTubeId(videoUrl);
4
+ if (!videoId)
5
+ return false;
6
+ // Try loading YouTube thumbnail images — avoids CORS problems because
7
+ // creating an Image and listening for load/error is not blocked by CORS.
8
+ const thumbs = [
9
+ `https://img.youtube.com/vi/${videoId}/maxresdefault.jpg`,
10
+ `https://img.youtube.com/vi/${videoId}/hqdefault.jpg`,
11
+ `https://img.youtube.com/vi/${videoId}/mqdefault.jpg`,
12
+ `https://img.youtube.com/vi/${videoId}/default.jpg`,
13
+ ];
14
+ const loadImage = (src) => new Promise((resolve) => {
15
+ const img = new Image();
16
+ img.onload = () => resolve(true);
17
+ img.onerror = () => resolve(false);
18
+ img.src = src;
19
+ });
20
+ for (const url of thumbs) {
21
+ try {
22
+ const ok = await loadImage(url);
23
+ if (ok)
24
+ return true;
25
+ }
26
+ catch (_a) {
27
+ // ignore and try next thumbnail
28
+ }
29
+ }
30
+ // Fallback: try oEmbed endpoint (may be subject to CORS in some environments)
31
+ try {
32
+ const watchUrl = `https://www.youtube.com/watch?v=${encodeURIComponent(videoId)}`;
33
+ const oembedUrl = `https://www.youtube.com/oembed?url=${encodeURIComponent(watchUrl)}&format=json`;
34
+ const res = await fetch(oembedUrl, { method: "GET" });
35
+ return res.ok;
36
+ }
37
+ catch (_b) {
38
+ return false;
39
+ }
40
+ }
@@ -1,5 +1,5 @@
1
1
  export async function validateYoutubeLink(videoUrl) {
2
- const { extractYouTubeId } = await import("./extract-youtube-video-id.js");
2
+ const { extractYouTubeId } = await import("./extract-youtube-video-id");
3
3
  const videoId = extractYouTubeId(videoUrl);
4
4
  if (!videoId)
5
5
  return false;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-youtube-link.js","sourceRoot":"","sources":["../../src/youtube/validate-youtube-link.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDA0CC;AA1CM,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,4BAA4B,GAAC,CAAA;IACvE,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC1C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAE1B,sEAAsE;IACtE,yEAAyE;IACzE,MAAM,MAAM,GAAG;QACb,8BAA8B,OAAO,oBAAoB;QACzD,8BAA8B,OAAO,gBAAgB;QACrD,8BAA8B,OAAO,gBAAgB;QACrD,8BAA8B,OAAO,cAAc;KACpD,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAChC,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAA;QACvB,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAChC,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAClC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA;IACf,CAAC,CAAC,CAAA;IAEJ,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;YAC/B,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAA;QACrB,CAAC;QAAC,WAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,mCAAmC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAA;QACjF,MAAM,SAAS,GAAG,sCAAsC,kBAAkB,CACxE,QAAQ,CACT,cAAc,CAAA;QACf,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QACrD,OAAO,GAAG,CAAC,EAAE,CAAA;IACf,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}