@splendidlabz/utils 1.6.0 → 1.8.1

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 (474) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/dom/accessibility.cjs +53 -0
  3. package/dist/cjs/dom/actions/index.cjs +407 -0
  4. package/dist/cjs/dom/actions/masonry.cjs +149 -0
  5. package/dist/cjs/dom/actions/prefer-horizontal-scroll.cjs +157 -0
  6. package/dist/cjs/dom/actions/sticky.cjs +211 -0
  7. package/dist/cjs/dom/bounding-box.cjs +70 -0
  8. package/dist/cjs/dom/clipboard.cjs +37 -0
  9. package/dist/cjs/dom/cookie.cjs +57 -0
  10. package/dist/cjs/dom/css-vars.cjs +57 -0
  11. package/dist/cjs/dom/events.cjs +95 -0
  12. package/dist/cjs/dom/focusable.cjs +143 -0
  13. package/dist/cjs/dom/font-size.cjs +74 -0
  14. package/dist/cjs/dom/get-element.cjs +98 -0
  15. package/dist/cjs/dom/hash.cjs +35 -0
  16. package/dist/cjs/dom/index.cjs +1197 -0
  17. package/dist/cjs/dom/keyboard.cjs +51 -0
  18. package/dist/cjs/dom/local-store.cjs +79 -0
  19. package/dist/cjs/dom/media.cjs +59 -0
  20. package/dist/cjs/dom/observers/index.cjs +156 -0
  21. package/dist/cjs/dom/observers/intersection-observer.cjs +91 -0
  22. package/dist/cjs/dom/observers/mutation-observer.cjs +95 -0
  23. package/dist/cjs/dom/observers/observer.cjs +48 -0
  24. package/dist/cjs/dom/observers/resize-observer.cjs +82 -0
  25. package/dist/cjs/dom/pkce.cjs +53 -0
  26. package/dist/cjs/dom/query-params.cjs +38 -0
  27. package/dist/cjs/dom/random-string.cjs +38 -0
  28. package/dist/cjs/dom/sanitize.cjs +65 -0
  29. package/dist/cjs/dom/session-store.cjs +49 -0
  30. package/dist/cjs/dom/spam-prevention.cjs +50 -0
  31. package/dist/cjs/dom/trap-focus.cjs +197 -0
  32. package/dist/cjs/dom/ui/aria-current.cjs +43 -0
  33. package/dist/cjs/dom/ui/inconsistent-button-fix.cjs +35 -0
  34. package/dist/cjs/dom/ui/index.cjs +105 -0
  35. package/dist/cjs/dom/ui/scroll-container.cjs +47 -0
  36. package/dist/cjs/dom/ui/traverse-and-scramble.cjs +50 -0
  37. package/dist/cjs/lib/arrays/index.cjs +139 -0
  38. package/dist/cjs/lib/arrays/item-position.cjs +42 -0
  39. package/dist/cjs/lib/arrays/join.cjs +43 -0
  40. package/dist/cjs/lib/arrays/shuffle.cjs +42 -0
  41. package/dist/cjs/lib/arrays/sort.cjs +67 -0
  42. package/dist/cjs/lib/arrays/split-array.cjs +41 -0
  43. package/dist/cjs/lib/arrays/unique.cjs +31 -0
  44. package/dist/cjs/lib/auth/index.cjs +53 -0
  45. package/dist/cjs/lib/auth/route-manager.cjs +51 -0
  46. package/dist/cjs/lib/checks.cjs +58 -0
  47. package/dist/cjs/lib/date/days.cjs +37 -0
  48. package/dist/cjs/lib/date/index.cjs +208 -0
  49. package/dist/cjs/lib/date/months.cjs +102 -0
  50. package/dist/cjs/lib/date/time.cjs +117 -0
  51. package/dist/cjs/lib/form/form-data.cjs +83 -0
  52. package/dist/cjs/lib/form/index.cjs +122 -0
  53. package/dist/cjs/lib/form/sanitize.cjs +61 -0
  54. package/dist/cjs/lib/functions/debounce.cjs +43 -0
  55. package/dist/cjs/lib/functions/env.cjs +32 -0
  56. package/dist/cjs/lib/functions/functional.cjs +62 -0
  57. package/dist/cjs/lib/functions/index.cjs +122 -0
  58. package/dist/cjs/lib/functions/throttle.cjs +38 -0
  59. package/dist/cjs/lib/functions/timeout.cjs +41 -0
  60. package/dist/cjs/lib/hash.cjs +43 -0
  61. package/dist/cjs/lib/index.cjs +1146 -0
  62. package/dist/cjs/lib/numbers/index.cjs +49 -0
  63. package/dist/cjs/lib/numbers/math.cjs +36 -0
  64. package/dist/cjs/lib/objects/camelcase-keys.cjs +80 -0
  65. package/dist/cjs/lib/objects/empty.cjs +39 -0
  66. package/dist/cjs/lib/objects/equal.cjs +47 -0
  67. package/dist/cjs/lib/objects/extend.cjs +147 -0
  68. package/dist/cjs/lib/objects/flatten.cjs +48 -0
  69. package/dist/cjs/lib/objects/index.cjs +378 -0
  70. package/dist/cjs/lib/objects/json.cjs +35 -0
  71. package/dist/cjs/lib/objects/loop.cjs +40 -0
  72. package/dist/cjs/lib/objects/mix/mix.cjs +115 -0
  73. package/dist/cjs/lib/objects/nested-property.cjs +45 -0
  74. package/dist/cjs/lib/objects/normalize-object.cjs +106 -0
  75. package/dist/cjs/lib/objects/omit-empty.cjs +40 -0
  76. package/dist/cjs/lib/objects/size.cjs +63 -0
  77. package/dist/cjs/lib/objects/split.cjs +39 -0
  78. package/dist/cjs/lib/promises/index.cjs +69 -0
  79. package/dist/cjs/lib/promises/reject.cjs +67 -0
  80. package/dist/cjs/lib/sse.cjs +99 -0
  81. package/dist/cjs/lib/strings/convert-case/convert-case.cjs +96 -0
  82. package/dist/cjs/lib/strings/index.cjs +190 -0
  83. package/dist/cjs/lib/strings/markdown.cjs +59 -0
  84. package/dist/cjs/lib/strings/name.cjs +46 -0
  85. package/dist/cjs/lib/strings/pluralize.cjs +40 -0
  86. package/dist/cjs/lib/strings/query-string.cjs +43 -0
  87. package/dist/cjs/lib/style/index.cjs +64 -0
  88. package/dist/cjs/lib/symbols/index.cjs +40 -0
  89. package/dist/cjs/lib/symbols/symbols.cjs +38 -0
  90. package/dist/cjs/node/common.cjs +42 -0
  91. package/dist/cjs/node/dirname.cjs +49 -0
  92. package/dist/cjs/node/file-cache.cjs +196 -0
  93. package/dist/cjs/node/file.cjs +50 -0
  94. package/dist/cjs/node/hash.cjs +42 -0
  95. package/dist/cjs/node/index.cjs +290 -0
  96. package/dist/cjs/node/pkce.cjs +62 -0
  97. package/dist/cjs/node/random-string.cjs +43 -0
  98. package/dist/cjs/node/sanitize.cjs +65 -0
  99. package/dist/esm/dom/accessibility.js +27 -0
  100. package/dist/esm/dom/actions/index.js +379 -0
  101. package/dist/esm/dom/actions/masonry.js +123 -0
  102. package/dist/esm/dom/actions/prefer-horizontal-scroll.js +131 -0
  103. package/dist/esm/dom/actions/sticky.js +185 -0
  104. package/dist/esm/dom/bounding-box.js +45 -0
  105. package/dist/esm/dom/clipboard.js +13 -0
  106. package/dist/esm/dom/cookie.js +32 -0
  107. package/dist/esm/dom/css-vars.js +28 -0
  108. package/dist/esm/dom/events.js +67 -0
  109. package/dist/esm/dom/focusable.js +118 -0
  110. package/dist/esm/dom/font-size.js +44 -0
  111. package/dist/esm/dom/get-element.js +67 -0
  112. package/dist/esm/dom/hash.js +11 -0
  113. package/dist/esm/dom/index.js +1100 -0
  114. package/dist/esm/dom/keyboard.js +23 -0
  115. package/dist/esm/dom/local-store.js +55 -0
  116. package/dist/esm/dom/media.js +33 -0
  117. package/dist/esm/dom/observers/index.js +128 -0
  118. package/dist/esm/dom/observers/intersection-observer.js +65 -0
  119. package/dist/esm/dom/observers/mutation-observer.js +69 -0
  120. package/dist/esm/dom/observers/observer.js +22 -0
  121. package/dist/esm/dom/observers/resize-observer.js +56 -0
  122. package/dist/esm/dom/pkce.js +27 -0
  123. package/dist/esm/dom/query-params.js +14 -0
  124. package/dist/esm/dom/random-string.js +13 -0
  125. package/dist/esm/dom/sanitize.js +31 -0
  126. package/dist/esm/dom/session-store.js +25 -0
  127. package/dist/esm/dom/spam-prevention.js +26 -0
  128. package/dist/esm/dom/trap-focus.js +170 -0
  129. package/dist/esm/dom/ui/aria-current.js +18 -0
  130. package/dist/esm/dom/ui/inconsistent-button-fix.js +11 -0
  131. package/dist/esm/dom/ui/index.js +75 -0
  132. package/dist/esm/dom/ui/scroll-container.js +23 -0
  133. package/dist/esm/dom/ui/traverse-and-scramble.js +26 -0
  134. package/dist/esm/lib/arrays/index.js +106 -0
  135. package/dist/esm/lib/arrays/item-position.js +16 -0
  136. package/dist/esm/lib/arrays/join.js +17 -0
  137. package/dist/esm/lib/arrays/shuffle.js +18 -0
  138. package/dist/esm/lib/arrays/sort.js +41 -0
  139. package/dist/esm/lib/arrays/split-array.js +17 -0
  140. package/dist/esm/lib/arrays/unique.js +7 -0
  141. package/dist/esm/lib/auth/index.js +26 -0
  142. package/dist/esm/lib/auth/route-manager.js +26 -0
  143. package/dist/esm/lib/checks.js +31 -0
  144. package/dist/esm/lib/date/days.js +13 -0
  145. package/dist/esm/lib/date/index.js +173 -0
  146. package/dist/esm/lib/date/months.js +78 -0
  147. package/dist/esm/lib/date/time.js +84 -0
  148. package/dist/esm/lib/form/form-data.js +58 -0
  149. package/dist/esm/lib/form/index.js +92 -0
  150. package/dist/esm/lib/form/sanitize.js +35 -0
  151. package/dist/esm/lib/functions/debounce.js +19 -0
  152. package/dist/esm/lib/functions/env.js +8 -0
  153. package/dist/esm/lib/functions/functional.js +35 -0
  154. package/dist/esm/lib/functions/index.js +87 -0
  155. package/dist/esm/lib/functions/throttle.js +14 -0
  156. package/dist/esm/lib/functions/timeout.js +15 -0
  157. package/dist/esm/lib/hash.js +19 -0
  158. package/dist/esm/lib/index.js +1027 -0
  159. package/dist/esm/lib/numbers/index.js +21 -0
  160. package/dist/esm/lib/numbers/math.js +11 -0
  161. package/dist/esm/lib/objects/camelcase-keys.js +54 -0
  162. package/dist/esm/lib/objects/empty.js +14 -0
  163. package/dist/esm/lib/objects/equal.js +12 -0
  164. package/dist/esm/lib/objects/extend.js +121 -0
  165. package/dist/esm/lib/objects/flatten.js +22 -0
  166. package/dist/esm/lib/objects/index.js +323 -0
  167. package/dist/esm/lib/objects/json.js +11 -0
  168. package/dist/esm/lib/objects/loop.js +15 -0
  169. package/dist/esm/lib/objects/mix/mix.js +89 -0
  170. package/dist/esm/lib/objects/nested-property.js +19 -0
  171. package/dist/esm/lib/objects/normalize-object.js +80 -0
  172. package/dist/esm/lib/objects/omit-empty.js +16 -0
  173. package/dist/esm/lib/objects/size.js +39 -0
  174. package/dist/esm/lib/objects/split.js +15 -0
  175. package/dist/esm/lib/promises/index.js +33 -0
  176. package/dist/esm/lib/promises/reject.js +33 -0
  177. package/dist/esm/lib/sse.js +72 -0
  178. package/dist/esm/lib/strings/convert-case/convert-case.js +65 -0
  179. package/dist/esm/lib/strings/index.js +140 -0
  180. package/dist/esm/lib/strings/markdown.js +34 -0
  181. package/dist/esm/lib/strings/name.js +22 -0
  182. package/dist/esm/lib/strings/pluralize.js +6 -0
  183. package/dist/esm/lib/strings/query-string.js +17 -0
  184. package/dist/esm/lib/style/index.js +38 -0
  185. package/dist/esm/lib/symbols/index.js +13 -0
  186. package/dist/esm/lib/symbols/symbols.js +13 -0
  187. package/dist/esm/node/common.js +8 -0
  188. package/dist/esm/node/dirname.js +14 -0
  189. package/dist/esm/node/file-cache.js +158 -0
  190. package/dist/esm/node/file.js +15 -0
  191. package/dist/esm/node/hash.js +8 -0
  192. package/dist/esm/node/index.js +243 -0
  193. package/dist/esm/node/pkce.js +28 -0
  194. package/dist/esm/node/random-string.js +9 -0
  195. package/dist/esm/node/sanitize.js +31 -0
  196. package/dist/{dom/accessibility.d.ts → types/dom/accessibility.d.cts} +5 -3
  197. package/dist/types/dom/actions/index.d.cts +3 -0
  198. package/dist/types/dom/actions/masonry.d.cts +5 -0
  199. package/dist/types/dom/actions/prefer-horizontal-scroll.d.cts +5 -0
  200. package/dist/types/dom/actions/sticky.d.cts +5 -0
  201. package/dist/{dom/bounding-box.d.ts → types/dom/bounding-box.d.cts} +4 -2
  202. package/dist/{dom/clipboard.d.ts → types/dom/clipboard.d.cts} +3 -1
  203. package/dist/types/dom/cookie.d.cts +7 -0
  204. package/dist/types/dom/css-vars.d.cts +6 -0
  205. package/dist/types/dom/events.d.cts +20 -0
  206. package/dist/{dom/focusable.d.ts → types/dom/focusable.d.cts} +5 -3
  207. package/dist/types/dom/font-size.d.cts +7 -0
  208. package/dist/{dom/get-element.d.ts → types/dom/get-element.d.cts} +10 -8
  209. package/dist/types/dom/hash.d.cts +3 -0
  210. package/dist/types/dom/index.d.cts +30 -0
  211. package/dist/{dom/keyboard.d.ts → types/dom/keyboard.d.cts} +7 -5
  212. package/dist/{dom/local-store.d.ts → types/dom/local-store.d.cts} +3 -1
  213. package/dist/types/dom/media.d.cts +5 -0
  214. package/dist/types/dom/observers/index.d.cts +3 -0
  215. package/dist/{dom/observers/intersection-observer.d.ts → types/dom/observers/intersection-observer.d.cts} +3 -1
  216. package/dist/{dom/observers/mutation-observer.d.ts → types/dom/observers/mutation-observer.d.cts} +3 -1
  217. package/dist/types/dom/observers/observer.d.cts +3 -0
  218. package/dist/{dom/observers/resize-observer.d.ts → types/dom/observers/resize-observer.d.cts} +3 -1
  219. package/dist/{node/pkce.d.ts → types/dom/pkce.d.cts} +3 -1
  220. package/dist/{dom/query-params.d.ts → types/dom/query-params.d.cts} +3 -1
  221. package/dist/{dom/random-string.d.ts → types/dom/random-string.d.cts} +4 -2
  222. package/dist/{dom/sanitize.d.ts → types/dom/sanitize.d.cts} +3 -1
  223. package/dist/{dom/session-store.d.ts → types/dom/session-store.d.cts} +3 -1
  224. package/dist/types/dom/spam-prevention.d.cts +14 -0
  225. package/dist/{dom/trap-focus.d.ts → types/dom/trap-focus.d.cts} +8 -4
  226. package/dist/types/dom/ui/aria-current.d.cts +7 -0
  227. package/dist/{dom/ui/inconsistent-button-fix.d.ts → types/dom/ui/inconsistent-button-fix.d.cts} +3 -1
  228. package/dist/types/dom/ui/index.d.cts +4 -0
  229. package/dist/types/dom/ui/scroll-container.d.cts +3 -0
  230. package/dist/{dom/ui/traverse-and-scramble.d.ts → types/dom/ui/traverse-and-scramble.d.cts} +3 -1
  231. package/dist/types/lib/arrays/index.d.cts +6 -0
  232. package/dist/{lib/arrays/item-position.d.ts → types/lib/arrays/item-position.d.cts} +5 -3
  233. package/dist/{lib/arrays/join.d.ts → types/lib/arrays/join.d.cts} +3 -1
  234. package/dist/types/lib/arrays/shuffle.d.cts +3 -0
  235. package/dist/{lib/arrays/sort.d.ts → types/lib/arrays/sort.d.cts} +3 -1
  236. package/dist/types/lib/arrays/split-array.d.cts +6 -0
  237. package/dist/types/lib/arrays/unique.d.cts +3 -0
  238. package/dist/types/lib/auth/index.d.cts +1 -0
  239. package/dist/{lib/auth/route-manager.d.ts → types/lib/auth/route-manager.d.cts} +5 -2
  240. package/dist/{lib/checks.d.ts → types/lib/checks.d.cts} +6 -4
  241. package/dist/{lib/date/days.d.ts → types/lib/date/days.d.cts} +3 -1
  242. package/dist/types/lib/date/index.d.cts +3 -0
  243. package/dist/{lib/date/months.d.ts → types/lib/date/months.d.cts} +3 -1
  244. package/dist/types/lib/date/time.d.cts +21 -0
  245. package/dist/types/lib/form/form-data.d.cts +9 -0
  246. package/dist/types/lib/form/index.d.cts +2 -0
  247. package/dist/{lib/form/sanitize.d.ts → types/lib/form/sanitize.d.cts} +6 -4
  248. package/dist/types/lib/functions/debounce.d.cts +3 -0
  249. package/dist/types/lib/functions/env.d.cts +3 -0
  250. package/dist/types/lib/functions/functional.d.cts +6 -0
  251. package/dist/types/lib/functions/index.d.cts +5 -0
  252. package/dist/types/lib/functions/throttle.d.cts +3 -0
  253. package/dist/types/lib/functions/timeout.d.cts +5 -0
  254. package/dist/types/lib/hash.d.cts +3 -0
  255. package/dist/types/lib/index.d.cts +43 -0
  256. package/dist/types/lib/numbers/index.d.cts +5 -0
  257. package/dist/types/lib/numbers/math.d.cts +4 -0
  258. package/dist/types/lib/objects/camelcase-keys.d.cts +3 -0
  259. package/dist/types/lib/objects/empty.d.cts +4 -0
  260. package/dist/types/lib/objects/equal.d.cts +4 -0
  261. package/dist/types/lib/objects/extend.d.cts +6 -0
  262. package/dist/types/lib/objects/flatten.d.cts +6 -0
  263. package/dist/types/lib/objects/index.d.cts +13 -0
  264. package/dist/types/lib/objects/json.d.cts +3 -0
  265. package/dist/types/lib/objects/loop.d.cts +4 -0
  266. package/dist/types/lib/objects/mix/mix.d.cts +44 -0
  267. package/dist/{lib/objects/nested-property.d.ts → types/lib/objects/nested-property.d.cts} +5 -3
  268. package/dist/types/lib/objects/normalize-object.d.cts +3 -0
  269. package/dist/types/lib/objects/omit-empty.d.cts +3 -0
  270. package/dist/types/lib/objects/size.d.cts +3 -0
  271. package/dist/{lib/objects/split.d.ts → types/lib/objects/split.d.cts} +3 -1
  272. package/dist/types/lib/promises/index.d.cts +1 -0
  273. package/dist/types/lib/promises/reject.d.cts +5 -0
  274. package/dist/{lib/sse.d.ts → types/lib/sse.d.cts} +4 -2
  275. package/dist/types/lib/strings/convert-case/convert-case.d.cts +10 -0
  276. package/dist/types/lib/strings/index.d.cts +5 -0
  277. package/dist/{lib/strings/markdown.d.ts → types/lib/strings/markdown.d.cts} +4 -2
  278. package/dist/types/lib/strings/name.d.cts +7 -0
  279. package/dist/types/lib/strings/pluralize.d.cts +3 -0
  280. package/dist/types/lib/strings/query-string.d.cts +10 -0
  281. package/dist/types/lib/style/index.d.cts +3 -0
  282. package/dist/types/lib/symbols/index.d.cts +1 -0
  283. package/dist/types/lib/symbols/symbols.d.cts +4 -0
  284. package/dist/types/node/common.d.cts +3 -0
  285. package/dist/types/node/dirname.d.cts +9 -0
  286. package/dist/{node/file-cache.d.ts → types/node/file-cache.d.cts} +7 -5
  287. package/dist/types/node/file.d.cts +4 -0
  288. package/dist/types/node/hash.d.cts +3 -0
  289. package/dist/types/node/index.d.cts +7 -0
  290. package/dist/{dom/pkce.d.ts → types/node/pkce.d.cts} +3 -1
  291. package/dist/types/node/random-string.d.cts +3 -0
  292. package/dist/{node/sanitize.d.ts → types/node/sanitize.d.cts} +3 -1
  293. package/package.json +28 -16
  294. package/{dom → src/dom}/index.js +1 -0
  295. package/src/dom/spam-prevention.js +39 -0
  296. package/{dom → src/dom}/ui/aria-current.js +1 -1
  297. package/{lib → src/lib}/arrays/index.js +1 -0
  298. package/{lib → src/lib}/arrays/sort.js +6 -6
  299. package/src/lib/arrays/split-array.js +15 -0
  300. package/{lib → src/lib}/auth/route-manager.js +1 -0
  301. package/{lib → src/lib}/date/time.js +38 -5
  302. package/{lib → src/lib}/numbers/index.js +1 -1
  303. package/src/lib/numbers/split-unit.test.js +45 -0
  304. package/src/lib/objects/mix/mix.js +191 -0
  305. package/{lib → src/lib}/objects/mix/mix.test.js +99 -2
  306. package/src/lib/strings/pluralize.js +2 -0
  307. package/{lib → src/lib}/style/index.js +2 -0
  308. package/{node → src/node}/file-cache.js +1 -1
  309. package/tsconfig.json +6 -6
  310. package/tsup.config.js +38 -0
  311. package/tsup.config.mjs +43 -0
  312. package/dist/dom/actions/index.d.ts +0 -3
  313. package/dist/dom/actions/masonry.d.ts +0 -3
  314. package/dist/dom/actions/prefer-horizontal-scroll.d.ts +0 -3
  315. package/dist/dom/actions/sticky.d.ts +0 -3
  316. package/dist/dom/cookie.d.ts +0 -5
  317. package/dist/dom/css-vars.d.ts +0 -4
  318. package/dist/dom/events.d.ts +0 -18
  319. package/dist/dom/font-size.d.ts +0 -5
  320. package/dist/dom/hash.d.ts +0 -1
  321. package/dist/dom/index.d.ts +0 -22
  322. package/dist/dom/media.d.ts +0 -3
  323. package/dist/dom/observers/index.d.ts +0 -3
  324. package/dist/dom/observers/observer.d.ts +0 -1
  325. package/dist/dom/ui/aria-current.d.ts +0 -5
  326. package/dist/dom/ui/index.d.ts +0 -4
  327. package/dist/dom/ui/scroll-container.d.ts +0 -1
  328. package/dist/lib/arrays/index.d.ts +0 -5
  329. package/dist/lib/arrays/shuffle.d.ts +0 -1
  330. package/dist/lib/arrays/unique.d.ts +0 -1
  331. package/dist/lib/auth/index.d.ts +0 -1
  332. package/dist/lib/date/index.d.ts +0 -3
  333. package/dist/lib/date/time.d.ts +0 -8
  334. package/dist/lib/form/form-data.d.ts +0 -7
  335. package/dist/lib/form/index.d.ts +0 -2
  336. package/dist/lib/functions/debounce.d.ts +0 -1
  337. package/dist/lib/functions/env.d.ts +0 -1
  338. package/dist/lib/functions/functional.d.ts +0 -4
  339. package/dist/lib/functions/index.d.ts +0 -5
  340. package/dist/lib/functions/throttle.d.ts +0 -1
  341. package/dist/lib/functions/timeout.d.ts +0 -3
  342. package/dist/lib/hash.d.ts +0 -1
  343. package/dist/lib/index.d.ts +0 -14
  344. package/dist/lib/numbers/index.d.ts +0 -2
  345. package/dist/lib/numbers/math.d.ts +0 -2
  346. package/dist/lib/objects/camelcase-keys.d.ts +0 -1
  347. package/dist/lib/objects/empty.d.ts +0 -2
  348. package/dist/lib/objects/equal.d.ts +0 -2
  349. package/dist/lib/objects/extend.d.ts +0 -4
  350. package/dist/lib/objects/flatten.d.ts +0 -4
  351. package/dist/lib/objects/index.d.ts +0 -13
  352. package/dist/lib/objects/json.d.ts +0 -1
  353. package/dist/lib/objects/loop.d.ts +0 -2
  354. package/dist/lib/objects/mix/mix.d.ts +0 -1
  355. package/dist/lib/objects/normalize-object.d.ts +0 -1
  356. package/dist/lib/objects/omit-empty.d.ts +0 -1
  357. package/dist/lib/objects/size.d.ts +0 -1
  358. package/dist/lib/promises/index.d.ts +0 -1
  359. package/dist/lib/promises/reject.d.ts +0 -3
  360. package/dist/lib/strings/convert-case/convert-case.d.ts +0 -8
  361. package/dist/lib/strings/index.d.ts +0 -5
  362. package/dist/lib/strings/name.d.ts +0 -5
  363. package/dist/lib/strings/pluralize.d.ts +0 -1
  364. package/dist/lib/strings/query-string.d.ts +0 -8
  365. package/dist/lib/style/index.d.ts +0 -1
  366. package/dist/lib/symbols/index.d.ts +0 -1
  367. package/dist/lib/symbols/symbols.d.ts +0 -2
  368. package/dist/node/common.d.ts +0 -1
  369. package/dist/node/dirname.d.ts +0 -7
  370. package/dist/node/file.d.ts +0 -2
  371. package/dist/node/hash.d.ts +0 -1
  372. package/dist/node/index.d.ts +0 -7
  373. package/dist/node/random-string.d.ts +0 -1
  374. package/lib/objects/mix/mix.js +0 -102
  375. package/lib/strings/pluralize.js +0 -2
  376. /package/{dom → src/dom}/accessibility.js +0 -0
  377. /package/{dom → src/dom}/actions/index.js +0 -0
  378. /package/{dom → src/dom}/actions/masonry.js +0 -0
  379. /package/{dom → src/dom}/actions/prefer-horizontal-scroll.js +0 -0
  380. /package/{dom → src/dom}/actions/sticky.js +0 -0
  381. /package/{dom → src/dom}/bounding-box.js +0 -0
  382. /package/{dom → src/dom}/clipboard.js +0 -0
  383. /package/{dom → src/dom}/cookie.js +0 -0
  384. /package/{dom → src/dom}/css-vars.js +0 -0
  385. /package/{dom → src/dom}/events.js +0 -0
  386. /package/{dom → src/dom}/events.test.js +0 -0
  387. /package/{dom → src/dom}/focusable.js +0 -0
  388. /package/{dom → src/dom}/font-size.js +0 -0
  389. /package/{dom → src/dom}/get-element.js +0 -0
  390. /package/{dom → src/dom}/hash.js +0 -0
  391. /package/{dom → src/dom}/keyboard.js +0 -0
  392. /package/{dom → src/dom}/local-store.js +0 -0
  393. /package/{dom → src/dom}/media.js +0 -0
  394. /package/{dom → src/dom}/observers/index.js +0 -0
  395. /package/{dom → src/dom}/observers/intersection-observer.js +0 -0
  396. /package/{dom → src/dom}/observers/mutation-observer.js +0 -0
  397. /package/{dom → src/dom}/observers/observer.js +0 -0
  398. /package/{dom → src/dom}/observers/resize-observer.js +0 -0
  399. /package/{dom → src/dom}/pkce.js +0 -0
  400. /package/{dom → src/dom}/query-params.js +0 -0
  401. /package/{dom → src/dom}/random-string.js +0 -0
  402. /package/{dom → src/dom}/random-string.test.js +0 -0
  403. /package/{dom → src/dom}/sanitize.js +0 -0
  404. /package/{dom → src/dom}/session-store.js +0 -0
  405. /package/{dom → src/dom}/trap-focus.js +0 -0
  406. /package/{dom → src/dom}/ui/inconsistent-button-fix.js +0 -0
  407. /package/{dom → src/dom}/ui/index.js +0 -0
  408. /package/{dom → src/dom}/ui/scroll-container.js +0 -0
  409. /package/{dom → src/dom}/ui/traverse-and-scramble.js +0 -0
  410. /package/{lib → src/lib}/arrays/item-position.js +0 -0
  411. /package/{lib → src/lib}/arrays/join.js +0 -0
  412. /package/{lib → src/lib}/arrays/shuffle.js +0 -0
  413. /package/{lib → src/lib}/arrays/sort.spec.js +0 -0
  414. /package/{lib → src/lib}/arrays/unique.js +0 -0
  415. /package/{lib → src/lib}/auth/index.js +0 -0
  416. /package/{lib → src/lib}/checks.js +0 -0
  417. /package/{lib → src/lib}/date/days.js +0 -0
  418. /package/{lib → src/lib}/date/index.js +0 -0
  419. /package/{lib → src/lib}/date/months.js +0 -0
  420. /package/{lib → src/lib}/form/form-data.js +0 -0
  421. /package/{lib → src/lib}/form/index.js +0 -0
  422. /package/{lib → src/lib}/form/sanitize.js +0 -0
  423. /package/{lib → src/lib}/form/sanitize.spec.js +0 -0
  424. /package/{lib → src/lib}/functions/debounce.js +0 -0
  425. /package/{lib → src/lib}/functions/env.js +0 -0
  426. /package/{lib → src/lib}/functions/functional.js +0 -0
  427. /package/{lib → src/lib}/functions/index.js +0 -0
  428. /package/{lib → src/lib}/functions/throttle.js +0 -0
  429. /package/{lib → src/lib}/functions/timeout.js +0 -0
  430. /package/{lib → src/lib}/hash.js +0 -0
  431. /package/{lib → src/lib}/hash.spec.js +0 -0
  432. /package/{lib → src/lib}/index.js +0 -0
  433. /package/{lib → src/lib}/numbers/math.js +0 -0
  434. /package/{lib → src/lib}/objects/camelcase-keys.js +0 -0
  435. /package/{lib → src/lib}/objects/camelcase-keys.test.js +0 -0
  436. /package/{lib → src/lib}/objects/empty.js +0 -0
  437. /package/{lib → src/lib}/objects/equal.js +0 -0
  438. /package/{lib → src/lib}/objects/extend.js +0 -0
  439. /package/{lib → src/lib}/objects/extend.test.js +0 -0
  440. /package/{lib → src/lib}/objects/flatten.js +0 -0
  441. /package/{lib → src/lib}/objects/index.js +0 -0
  442. /package/{lib → src/lib}/objects/json.js +0 -0
  443. /package/{lib → src/lib}/objects/loop.js +0 -0
  444. /package/{lib → src/lib}/objects/loop.test.js +0 -0
  445. /package/{lib → src/lib}/objects/mix/mix.md +0 -0
  446. /package/{lib → src/lib}/objects/nested-property.js +0 -0
  447. /package/{lib → src/lib}/objects/normalize-object.js +0 -0
  448. /package/{lib → src/lib}/objects/omit-empty.js +0 -0
  449. /package/{lib → src/lib}/objects/omit-empty.test.js +0 -0
  450. /package/{lib → src/lib}/objects/size.js +0 -0
  451. /package/{lib → src/lib}/objects/split.js +0 -0
  452. /package/{lib → src/lib}/promises/index.js +0 -0
  453. /package/{lib → src/lib}/promises/reject.js +0 -0
  454. /package/{lib → src/lib}/sse.js +0 -0
  455. /package/{lib → src/lib}/strings/convert-case/convert-case.js +0 -0
  456. /package/{lib → src/lib}/strings/convert-case/convert-case.md +0 -0
  457. /package/{lib → src/lib}/strings/convert-case/convert-case.test.js +0 -0
  458. /package/{lib → src/lib}/strings/index.js +0 -0
  459. /package/{lib → src/lib}/strings/markdown.js +0 -0
  460. /package/{lib → src/lib}/strings/name.js +0 -0
  461. /package/{lib → src/lib}/strings/name.test.js +0 -0
  462. /package/{lib → src/lib}/strings/query-string.js +0 -0
  463. /package/{lib → src/lib}/symbols/index.js +0 -0
  464. /package/{lib → src/lib}/symbols/symbols.js +0 -0
  465. /package/{node → src/node}/common.js +0 -0
  466. /package/{node → src/node}/dirname.js +0 -0
  467. /package/{node → src/node}/file.js +0 -0
  468. /package/{node → src/node}/hash.js +0 -0
  469. /package/{node → src/node}/index.js +0 -0
  470. /package/{node → src/node}/pkce.js +0 -0
  471. /package/{node → src/node}/random-string.js +0 -0
  472. /package/{node → src/node}/random-string.test.js +0 -0
  473. /package/{node → src/node}/sanitize.js +0 -0
  474. /package/{node → src/node}/sanitize.spec.js +0 -0
@@ -0,0 +1,23 @@
1
+ // src/dom/keyboard.js
2
+ function isTab(event) {
3
+ return !event.shiftKey && event.key === "Tab";
4
+ }
5
+ function isShiftTab(event) {
6
+ return event.shiftKey && event.key === "Tab";
7
+ }
8
+ function isTabKey(key) {
9
+ return key === "Tab";
10
+ }
11
+ function isArrowKey(key) {
12
+ return ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"].includes(key);
13
+ }
14
+ function isEscapeKey(key) {
15
+ return key === "Escape";
16
+ }
17
+ export {
18
+ isArrowKey,
19
+ isEscapeKey,
20
+ isShiftTab,
21
+ isTab,
22
+ isTabKey
23
+ };
@@ -0,0 +1,55 @@
1
+ // src/dom/local-store.js
2
+ var localStore = {
3
+ /**
4
+ * Retrieves a value from localStorage
5
+ * @param {string} key - The key to retrieve from localStorage
6
+ * @returns {any} The stored value. Returns parsed JSON if the value was stored as JSON. Returns the original string if not JSON, or undefined if key doesn't exist
7
+ */
8
+ get(key) {
9
+ const value = localStorage.getItem(key);
10
+ if (!value) return;
11
+ try {
12
+ return JSON.parse(value);
13
+ } catch (error) {
14
+ return value;
15
+ }
16
+ },
17
+ /**
18
+ * Stores a value in localStorage
19
+ * @param {string} key - The key to store the value under
20
+ * @param {any} value - The value to store. Objects will be stringified to JSON
21
+ */
22
+ set(key, value) {
23
+ if (typeof value === "string") {
24
+ localStorage.setItem(key, value);
25
+ } else {
26
+ localStorage.setItem(key, JSON.stringify(value));
27
+ }
28
+ },
29
+ /**
30
+ * Stores multiple key-value pairs in localStorage
31
+ * @param {Object|Map} data - An object or Map containing key-value pairs to store
32
+ */
33
+ setMultiple(data) {
34
+ for (const [key, value] of Object.entries(data)) {
35
+ this.set(key, value);
36
+ }
37
+ },
38
+ /**
39
+ * Removes a value from localStorage
40
+ * @param {string} key - The key to remove from localStorage
41
+ */
42
+ remove(key) {
43
+ localStorage.removeItem(key);
44
+ },
45
+ /**
46
+ * Removes multiple keys from localStorage
47
+ * @param {string[]} keys - Array of keys to remove from localStorage
48
+ */
49
+ removeMultiple(keys) {
50
+ keys.forEach((key) => this.remove(key));
51
+ }
52
+ };
53
+ export {
54
+ localStore
55
+ };
@@ -0,0 +1,33 @@
1
+ // src/dom/media.js
2
+ async function imagesLoaded(node) {
3
+ const images = Array.from(node.querySelectorAll("img"));
4
+ const promises = images.map((img) => {
5
+ return new Promise((resolve, reject) => {
6
+ if (img.complete) return resolve();
7
+ img.onload = resolve;
8
+ img.onerror = (e) => {
9
+ reject("Image failed to load");
10
+ };
11
+ });
12
+ });
13
+ return Promise.all(promises);
14
+ }
15
+ async function videosLoaded(node) {
16
+ const videos = Array.from(node.querySelectorAll("video"));
17
+ const promises = videos.map((video) => {
18
+ return new Promise((resolve, reject) => {
19
+ if (video.readyState === 4) return resolve();
20
+ video.onloadedmetadata = resolve;
21
+ video.onerror = reject;
22
+ });
23
+ });
24
+ return Promise.all(promises);
25
+ }
26
+ async function mediaLoaded(node) {
27
+ return Promise.all([imagesLoaded(node), videosLoaded(node)]);
28
+ }
29
+ export {
30
+ imagesLoaded,
31
+ mediaLoaded,
32
+ videosLoaded
33
+ };
@@ -0,0 +1,128 @@
1
+ // src/dom/events.js
2
+ function dispatchEvent(node, eventName, detail, options = {}) {
3
+ node.dispatchEvent(
4
+ new CustomEvent(eventName, {
5
+ ...options,
6
+ detail
7
+ })
8
+ );
9
+ }
10
+
11
+ // src/dom/get-element.js
12
+ function getNodeType(node) {
13
+ if (node instanceof Element) return "element";
14
+ if (node instanceof NodeList) return "nodelist";
15
+ if (Array.isArray(node)) return "array";
16
+ }
17
+
18
+ // src/dom/observers/observer.js
19
+ function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
20
+ const targetType = getNodeType(target);
21
+ if (targetType === "element") observer[method](target, options);
22
+ if (targetType === "nodelist") {
23
+ const elements = Array.from(target);
24
+ elements.forEach((element) => observer[method](element, options));
25
+ }
26
+ if (targetType === "array") {
27
+ target.forEach((element) => observer[method](element, options));
28
+ }
29
+ }
30
+
31
+ // src/dom/observers/intersection-observer.js
32
+ function intersectionObserver(target, options = {}) {
33
+ const { callback, ...opts } = options;
34
+ const observer = new IntersectionObserver(observerFn, opts);
35
+ useObserverMethodOnTarget(target, observer, "observe");
36
+ function observerFn(entries) {
37
+ for (const entry of entries) {
38
+ if (callback) callback({ entry, entries, observer });
39
+ else dispatchEvent(target, "intersect", { entry, entries, observer });
40
+ }
41
+ }
42
+ return {
43
+ observer,
44
+ observe(target2) {
45
+ useObserverMethodOnTarget(target2, observer, "observe", options);
46
+ },
47
+ unobserve(target2) {
48
+ useObserverMethodOnTarget(target2, observer, "unobserve");
49
+ },
50
+ takeRecords() {
51
+ return observer.takeRecords();
52
+ },
53
+ disconnect() {
54
+ const records = observer.takeRecords();
55
+ observer.disconnect();
56
+ if (records.length > 0) observerFn(records);
57
+ },
58
+ destroy() {
59
+ observer.disconnect();
60
+ }
61
+ };
62
+ }
63
+
64
+ // src/dom/observers/mutation-observer.js
65
+ var defaultOptions = {
66
+ attributes: false,
67
+ childList: false,
68
+ subtree: false
69
+ };
70
+ function mutationObserver(target, options) {
71
+ options = { ...defaultOptions, ...options };
72
+ const { callback, ...opts } = options;
73
+ const observer = new MutationObserver(observerFn);
74
+ if (target === window) target = document.body;
75
+ useObserverMethodOnTarget(target, observer, "observe", opts);
76
+ function observerFn(entries) {
77
+ for (const entry of entries) {
78
+ if (callback) callback({ entry, entries, observer });
79
+ else dispatchEvent(target, "mutate", { entry, entries, observer });
80
+ }
81
+ }
82
+ return {
83
+ observer,
84
+ observe(target2) {
85
+ useObserverMethodOnTarget(target2, observer, "observe", options);
86
+ },
87
+ takeRecords() {
88
+ return observer.takeRecords();
89
+ },
90
+ disconnect() {
91
+ const records = observer.takeRecords();
92
+ observer.disconnect();
93
+ if (records.length > 0) observerFn(records);
94
+ },
95
+ destroy() {
96
+ observer.disconnect();
97
+ }
98
+ };
99
+ }
100
+
101
+ // src/dom/observers/resize-observer.js
102
+ function resizeObserver(target, options) {
103
+ const { callback, ...opts } = options;
104
+ const observer = new ResizeObserver(observerFn);
105
+ if (target === window) target = document.body;
106
+ useObserverMethodOnTarget(target, observer, "observe", opts);
107
+ function observerFn(entries) {
108
+ for (const entry of entries) {
109
+ if (callback) callback({ entry, entries, observer });
110
+ else dispatchEvent(target, "resize-obs", { entry, entries, observer });
111
+ }
112
+ }
113
+ return {
114
+ observe(target2) {
115
+ useObserverMethodOnTarget(target2, observer, "observe", options);
116
+ },
117
+ unobserve(target2) {
118
+ useObserverMethodOnTarget(target2, observer, "unobserve");
119
+ },
120
+ disconnect: (_) => observer.disconnect(),
121
+ destroy: (_) => observer.disconnect()
122
+ };
123
+ }
124
+ export {
125
+ intersectionObserver,
126
+ mutationObserver,
127
+ resizeObserver
128
+ };
@@ -0,0 +1,65 @@
1
+ // src/dom/events.js
2
+ function dispatchEvent(node, eventName, detail, options = {}) {
3
+ node.dispatchEvent(
4
+ new CustomEvent(eventName, {
5
+ ...options,
6
+ detail
7
+ })
8
+ );
9
+ }
10
+
11
+ // src/dom/get-element.js
12
+ function getNodeType(node) {
13
+ if (node instanceof Element) return "element";
14
+ if (node instanceof NodeList) return "nodelist";
15
+ if (Array.isArray(node)) return "array";
16
+ }
17
+
18
+ // src/dom/observers/observer.js
19
+ function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
20
+ const targetType = getNodeType(target);
21
+ if (targetType === "element") observer[method](target, options);
22
+ if (targetType === "nodelist") {
23
+ const elements = Array.from(target);
24
+ elements.forEach((element) => observer[method](element, options));
25
+ }
26
+ if (targetType === "array") {
27
+ target.forEach((element) => observer[method](element, options));
28
+ }
29
+ }
30
+
31
+ // src/dom/observers/intersection-observer.js
32
+ function intersectionObserver(target, options = {}) {
33
+ const { callback, ...opts } = options;
34
+ const observer = new IntersectionObserver(observerFn, opts);
35
+ useObserverMethodOnTarget(target, observer, "observe");
36
+ function observerFn(entries) {
37
+ for (const entry of entries) {
38
+ if (callback) callback({ entry, entries, observer });
39
+ else dispatchEvent(target, "intersect", { entry, entries, observer });
40
+ }
41
+ }
42
+ return {
43
+ observer,
44
+ observe(target2) {
45
+ useObserverMethodOnTarget(target2, observer, "observe", options);
46
+ },
47
+ unobserve(target2) {
48
+ useObserverMethodOnTarget(target2, observer, "unobserve");
49
+ },
50
+ takeRecords() {
51
+ return observer.takeRecords();
52
+ },
53
+ disconnect() {
54
+ const records = observer.takeRecords();
55
+ observer.disconnect();
56
+ if (records.length > 0) observerFn(records);
57
+ },
58
+ destroy() {
59
+ observer.disconnect();
60
+ }
61
+ };
62
+ }
63
+ export {
64
+ intersectionObserver
65
+ };
@@ -0,0 +1,69 @@
1
+ // src/dom/events.js
2
+ function dispatchEvent(node, eventName, detail, options = {}) {
3
+ node.dispatchEvent(
4
+ new CustomEvent(eventName, {
5
+ ...options,
6
+ detail
7
+ })
8
+ );
9
+ }
10
+
11
+ // src/dom/get-element.js
12
+ function getNodeType(node) {
13
+ if (node instanceof Element) return "element";
14
+ if (node instanceof NodeList) return "nodelist";
15
+ if (Array.isArray(node)) return "array";
16
+ }
17
+
18
+ // src/dom/observers/observer.js
19
+ function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
20
+ const targetType = getNodeType(target);
21
+ if (targetType === "element") observer[method](target, options);
22
+ if (targetType === "nodelist") {
23
+ const elements = Array.from(target);
24
+ elements.forEach((element) => observer[method](element, options));
25
+ }
26
+ if (targetType === "array") {
27
+ target.forEach((element) => observer[method](element, options));
28
+ }
29
+ }
30
+
31
+ // src/dom/observers/mutation-observer.js
32
+ var defaultOptions = {
33
+ attributes: false,
34
+ childList: false,
35
+ subtree: false
36
+ };
37
+ function mutationObserver(target, options) {
38
+ options = { ...defaultOptions, ...options };
39
+ const { callback, ...opts } = options;
40
+ const observer = new MutationObserver(observerFn);
41
+ if (target === window) target = document.body;
42
+ useObserverMethodOnTarget(target, observer, "observe", opts);
43
+ function observerFn(entries) {
44
+ for (const entry of entries) {
45
+ if (callback) callback({ entry, entries, observer });
46
+ else dispatchEvent(target, "mutate", { entry, entries, observer });
47
+ }
48
+ }
49
+ return {
50
+ observer,
51
+ observe(target2) {
52
+ useObserverMethodOnTarget(target2, observer, "observe", options);
53
+ },
54
+ takeRecords() {
55
+ return observer.takeRecords();
56
+ },
57
+ disconnect() {
58
+ const records = observer.takeRecords();
59
+ observer.disconnect();
60
+ if (records.length > 0) observerFn(records);
61
+ },
62
+ destroy() {
63
+ observer.disconnect();
64
+ }
65
+ };
66
+ }
67
+ export {
68
+ mutationObserver
69
+ };
@@ -0,0 +1,22 @@
1
+ // src/dom/get-element.js
2
+ function getNodeType(node) {
3
+ if (node instanceof Element) return "element";
4
+ if (node instanceof NodeList) return "nodelist";
5
+ if (Array.isArray(node)) return "array";
6
+ }
7
+
8
+ // src/dom/observers/observer.js
9
+ function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
10
+ const targetType = getNodeType(target);
11
+ if (targetType === "element") observer[method](target, options);
12
+ if (targetType === "nodelist") {
13
+ const elements = Array.from(target);
14
+ elements.forEach((element) => observer[method](element, options));
15
+ }
16
+ if (targetType === "array") {
17
+ target.forEach((element) => observer[method](element, options));
18
+ }
19
+ }
20
+ export {
21
+ useObserverMethodOnTarget
22
+ };
@@ -0,0 +1,56 @@
1
+ // src/dom/events.js
2
+ function dispatchEvent(node, eventName, detail, options = {}) {
3
+ node.dispatchEvent(
4
+ new CustomEvent(eventName, {
5
+ ...options,
6
+ detail
7
+ })
8
+ );
9
+ }
10
+
11
+ // src/dom/get-element.js
12
+ function getNodeType(node) {
13
+ if (node instanceof Element) return "element";
14
+ if (node instanceof NodeList) return "nodelist";
15
+ if (Array.isArray(node)) return "array";
16
+ }
17
+
18
+ // src/dom/observers/observer.js
19
+ function useObserverMethodOnTarget(target, observer, method = "observe", options = void 0) {
20
+ const targetType = getNodeType(target);
21
+ if (targetType === "element") observer[method](target, options);
22
+ if (targetType === "nodelist") {
23
+ const elements = Array.from(target);
24
+ elements.forEach((element) => observer[method](element, options));
25
+ }
26
+ if (targetType === "array") {
27
+ target.forEach((element) => observer[method](element, options));
28
+ }
29
+ }
30
+
31
+ // src/dom/observers/resize-observer.js
32
+ function resizeObserver(target, options) {
33
+ const { callback, ...opts } = options;
34
+ const observer = new ResizeObserver(observerFn);
35
+ if (target === window) target = document.body;
36
+ useObserverMethodOnTarget(target, observer, "observe", opts);
37
+ function observerFn(entries) {
38
+ for (const entry of entries) {
39
+ if (callback) callback({ entry, entries, observer });
40
+ else dispatchEvent(target, "resize-obs", { entry, entries, observer });
41
+ }
42
+ }
43
+ return {
44
+ observe(target2) {
45
+ useObserverMethodOnTarget(target2, observer, "observe", options);
46
+ },
47
+ unobserve(target2) {
48
+ useObserverMethodOnTarget(target2, observer, "unobserve");
49
+ },
50
+ disconnect: (_) => observer.disconnect(),
51
+ destroy: (_) => observer.disconnect()
52
+ };
53
+ }
54
+ export {
55
+ resizeObserver
56
+ };
@@ -0,0 +1,27 @@
1
+ // src/dom/random-string.js
2
+ function randomString(length = 10) {
3
+ const firstLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));
4
+ const others = Math.random().toString(36).substring(2, 2 + length - 1);
5
+ return firstLetter + others;
6
+ }
7
+
8
+ // src/dom/pkce.js
9
+ async function PKCE() {
10
+ const codeVerifier = await randomString();
11
+ const codeChallenge = await getCodeChallenge(codeVerifier);
12
+ return {
13
+ state: await randomString(),
14
+ code_verifier: codeVerifier,
15
+ code_challenge: codeChallenge,
16
+ code_challenge_method: "S256"
17
+ };
18
+ }
19
+ async function getCodeChallenge(verifier) {
20
+ const encoder = new TextEncoder();
21
+ const data = encoder.encode(verifier);
22
+ const hashed = await window.crypto.subtle.digest("SHA-256", data);
23
+ return window.btoa(String.fromCharCode.apply(null, new Uint8Array(hashed))).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
24
+ }
25
+ export {
26
+ PKCE
27
+ };
@@ -0,0 +1,14 @@
1
+ // src/dom/query-params.js
2
+ var queryParams = {
3
+ get(key) {
4
+ const searchParams = new URLSearchParams(location.search);
5
+ return searchParams.get(key);
6
+ },
7
+ stringify(params) {
8
+ const searchParams = new URLSearchParams(location.search);
9
+ return searchParams.toString();
10
+ }
11
+ };
12
+ export {
13
+ queryParams
14
+ };
@@ -0,0 +1,13 @@
1
+ // src/dom/random-string.js
2
+ function randomString(length = 10) {
3
+ const firstLetter = String.fromCharCode(65 + Math.floor(Math.random() * 26));
4
+ const others = Math.random().toString(36).substring(2, 2 + length - 1);
5
+ return firstLetter + others;
6
+ }
7
+ function uuid() {
8
+ return crypto.randomUUID();
9
+ }
10
+ export {
11
+ randomString,
12
+ uuid
13
+ };
@@ -0,0 +1,31 @@
1
+ // src/dom/sanitize.js
2
+ import DOMPurify from "dompurify";
3
+
4
+ // src/lib/form/sanitize.js
5
+ function sanitize(value, options = {}) {
6
+ const { sanitizer, ...rest } = options;
7
+ if (!sanitizer) throw new Error("sanitizer function is required");
8
+ if (typeof value === "string") return sanitizer(value, rest);
9
+ if (Array.isArray(value)) return sanitizeArray(value, { sanitizer, ...rest });
10
+ if (value && typeof value === "object") {
11
+ return Object.fromEntries(
12
+ Object.entries(value).map(([key, val]) => [
13
+ key,
14
+ sanitize(val, { sanitizer, ...rest })
15
+ ])
16
+ );
17
+ }
18
+ return value;
19
+ }
20
+ function sanitizeArray(arr, { sanitizer, ...rest }) {
21
+ if (!sanitizer) throw new Error("sanitizer function is required");
22
+ return arr.map((item) => sanitize(item, { sanitizer, ...rest }));
23
+ }
24
+
25
+ // src/dom/sanitize.js
26
+ function sanitize2(value, options = {}) {
27
+ return sanitize(value, { sanitizer: DOMPurify.sanitize, ...options });
28
+ }
29
+ export {
30
+ sanitize2 as sanitize
31
+ };
@@ -0,0 +1,25 @@
1
+ // src/dom/session-store.js
2
+ var sessionStore = {
3
+ get(key) {
4
+ const value = sessionStorage.getItem(key);
5
+ if (!value) return;
6
+ try {
7
+ return JSON.parse(value);
8
+ } catch (error) {
9
+ return value;
10
+ }
11
+ },
12
+ set(key, value) {
13
+ if (typeof value === "string") {
14
+ sessionStorage.setItem(key, value);
15
+ } else {
16
+ sessionStorage.setItem(key, JSON.stringify(value));
17
+ }
18
+ },
19
+ remove(key) {
20
+ sessionStorage.removeItem(key);
21
+ }
22
+ };
23
+ export {
24
+ sessionStore
25
+ };
@@ -0,0 +1,26 @@
1
+ // src/dom/spam-prevention.js
2
+ function preventSpam(form, { honeypotField = "hp", honeypotDuration = 2e3 } = {}) {
3
+ const startTime = Date.now();
4
+ let hasInteraction = false;
5
+ function checkForInteraction() {
6
+ hasInteraction = true;
7
+ }
8
+ const events = ["keydown", "mousemove", "touchstart", "click"];
9
+ events.forEach((event) => {
10
+ form.addEventListener(event, checkForInteraction, { once: true });
11
+ });
12
+ form.containsSpam = function() {
13
+ const fillTime = Date.now() - startTime;
14
+ const isTooFast = fillTime < honeypotDuration;
15
+ const honeypotInput = form.querySelector(`[name="${honeypotField}"]`);
16
+ const hasHoneypotValue = honeypotInput?.value?.trim();
17
+ const noInteraction = !hasInteraction;
18
+ events.forEach(
19
+ (event) => form.removeEventListener(event, checkForInteraction)
20
+ );
21
+ return isTooFast || !!hasHoneypotValue || noInteraction;
22
+ };
23
+ }
24
+ export {
25
+ preventSpam
26
+ };