@vandenberghinc/volt 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/.vrepo +28 -0
  2. package/.vscode/tasks.json +87 -0
  3. package/README.md +67 -0
  4. package/backend/dist/cjs/blacklist.d.ts +10 -0
  5. package/backend/dist/cjs/blacklist.js +53 -0
  6. package/backend/dist/cjs/cli.d.ts +2 -0
  7. package/backend/dist/cjs/cli.js +263 -0
  8. package/backend/dist/cjs/database.d.ts +364 -0
  9. package/backend/dist/cjs/database.js +1962 -0
  10. package/backend/dist/cjs/endpoint.d.ts +57 -0
  11. package/backend/dist/cjs/endpoint.js +425 -0
  12. package/backend/dist/cjs/file_watcher.d.ts +44 -0
  13. package/backend/dist/cjs/file_watcher.js +348 -0
  14. package/backend/dist/cjs/frontend.d.ts +13 -0
  15. package/backend/dist/cjs/frontend.js +30 -0
  16. package/backend/dist/cjs/image_endpoint.d.ts +24 -0
  17. package/backend/dist/cjs/image_endpoint.js +210 -0
  18. package/backend/dist/cjs/logger.d.ts +5 -0
  19. package/backend/dist/cjs/logger.js +16 -0
  20. package/backend/dist/cjs/meta.d.ts +50 -0
  21. package/backend/dist/cjs/meta.js +153 -0
  22. package/backend/dist/cjs/mutex.d.ts +24 -0
  23. package/backend/dist/cjs/mutex.js +52 -0
  24. package/backend/dist/cjs/package.json +1 -0
  25. package/backend/dist/cjs/payments/paddle.d.ts +161 -0
  26. package/backend/dist/cjs/payments/paddle.js +2301 -0
  27. package/backend/dist/cjs/plugins/browser.d.ts +36 -0
  28. package/backend/dist/cjs/plugins/browser.js +183 -0
  29. package/backend/dist/cjs/plugins/communication.d.ts +70 -0
  30. package/backend/dist/cjs/plugins/communication.js +177 -0
  31. package/backend/dist/cjs/plugins/css.d.ts +10 -0
  32. package/backend/dist/cjs/plugins/css.js +71 -0
  33. package/backend/dist/cjs/plugins/mail.d.ts +277 -0
  34. package/backend/dist/cjs/plugins/mail.js +1419 -0
  35. package/backend/dist/cjs/plugins/pdf.d.ts +757 -0
  36. package/backend/dist/cjs/plugins/pdf.js +1694 -0
  37. package/backend/dist/cjs/plugins/thread_monitor.d.ts +18 -0
  38. package/backend/dist/cjs/plugins/thread_monitor.js +127 -0
  39. package/backend/dist/cjs/plugins/ts/compiler.d.ts +132 -0
  40. package/backend/dist/cjs/plugins/ts/compiler.js +944 -0
  41. package/backend/dist/cjs/plugins/ts/preprocessing.d.ts +14 -0
  42. package/backend/dist/cjs/plugins/ts/preprocessing.js +762 -0
  43. package/backend/dist/cjs/rate_limit.d.ts +65 -0
  44. package/backend/dist/cjs/rate_limit.js +463 -0
  45. package/backend/dist/cjs/request.deprc.d.ts +48 -0
  46. package/backend/dist/cjs/request.deprc.js +572 -0
  47. package/backend/dist/cjs/response.deprc.d.ts +55 -0
  48. package/backend/dist/cjs/response.deprc.js +275 -0
  49. package/backend/dist/cjs/server.d.ts +311 -0
  50. package/backend/dist/cjs/server.js +3475 -0
  51. package/backend/dist/cjs/splash_screen.d.ts +35 -0
  52. package/backend/dist/cjs/splash_screen.js +152 -0
  53. package/backend/dist/cjs/status.d.ts +60 -0
  54. package/backend/dist/cjs/status.js +199 -0
  55. package/backend/dist/cjs/stream.d.ts +75 -0
  56. package/backend/dist/cjs/stream.js +954 -0
  57. package/backend/dist/cjs/users.d.ts +111 -0
  58. package/backend/dist/cjs/users.js +1945 -0
  59. package/backend/dist/cjs/utils.d.ts +27 -0
  60. package/backend/dist/cjs/utils.js +329 -0
  61. package/backend/dist/cjs/view.d.ts +52 -0
  62. package/backend/dist/cjs/view.js +568 -0
  63. package/backend/dist/cjs/vinc.d.ts +2 -0
  64. package/backend/dist/cjs/vinc.dev.d.ts +2 -0
  65. package/backend/dist/cjs/vinc.dev.js +42 -0
  66. package/backend/dist/cjs/vinc.js +42 -0
  67. package/backend/dist/cjs/volt.d.ts +15 -0
  68. package/backend/dist/cjs/volt.js +64 -0
  69. package/backend/dist/css/adyen.css +92 -0
  70. package/backend/dist/css/volt.css +65 -0
  71. package/backend/dist/esm/blacklist.d.ts +10 -0
  72. package/backend/dist/esm/blacklist.js +49 -0
  73. package/backend/dist/esm/cli.d.ts +2 -0
  74. package/backend/dist/esm/cli.js +228 -0
  75. package/backend/dist/esm/database.d.ts +364 -0
  76. package/backend/dist/esm/database.js +1957 -0
  77. package/backend/dist/esm/endpoint.d.ts +57 -0
  78. package/backend/dist/esm/endpoint.js +421 -0
  79. package/backend/dist/esm/file_watcher.d.ts +44 -0
  80. package/backend/dist/esm/file_watcher.js +313 -0
  81. package/backend/dist/esm/frontend.d.ts +13 -0
  82. package/backend/dist/esm/frontend.js +27 -0
  83. package/backend/dist/esm/image_endpoint.d.ts +24 -0
  84. package/backend/dist/esm/image_endpoint.js +206 -0
  85. package/backend/dist/esm/logger.d.ts +5 -0
  86. package/backend/dist/esm/logger.js +13 -0
  87. package/backend/dist/esm/meta.d.ts +50 -0
  88. package/backend/dist/esm/meta.js +149 -0
  89. package/backend/dist/esm/mutex.d.ts +24 -0
  90. package/backend/dist/esm/mutex.js +48 -0
  91. package/backend/dist/esm/payments/paddle.d.ts +161 -0
  92. package/backend/dist/esm/payments/paddle.js +2261 -0
  93. package/backend/dist/esm/plugins/browser.d.ts +36 -0
  94. package/backend/dist/esm/plugins/browser.js +176 -0
  95. package/backend/dist/esm/plugins/communication.d.ts +70 -0
  96. package/backend/dist/esm/plugins/communication.js +169 -0
  97. package/backend/dist/esm/plugins/css.d.ts +10 -0
  98. package/backend/dist/esm/plugins/css.js +64 -0
  99. package/backend/dist/esm/plugins/mail.d.ts +277 -0
  100. package/backend/dist/esm/plugins/mail.js +1403 -0
  101. package/backend/dist/esm/plugins/pdf.d.ts +757 -0
  102. package/backend/dist/esm/plugins/pdf.js +1694 -0
  103. package/backend/dist/esm/plugins/thread_monitor.d.ts +18 -0
  104. package/backend/dist/esm/plugins/thread_monitor.js +120 -0
  105. package/backend/dist/esm/plugins/ts/compiler.d.ts +132 -0
  106. package/backend/dist/esm/plugins/ts/compiler.js +907 -0
  107. package/backend/dist/esm/plugins/ts/preprocessing.d.ts +14 -0
  108. package/backend/dist/esm/plugins/ts/preprocessing.js +724 -0
  109. package/backend/dist/esm/rate_limit.d.ts +65 -0
  110. package/backend/dist/esm/rate_limit.js +425 -0
  111. package/backend/dist/esm/request.deprc.d.ts +48 -0
  112. package/backend/dist/esm/request.deprc.js +572 -0
  113. package/backend/dist/esm/response.deprc.d.ts +55 -0
  114. package/backend/dist/esm/response.deprc.js +275 -0
  115. package/backend/dist/esm/server.d.ts +311 -0
  116. package/backend/dist/esm/server.js +3435 -0
  117. package/backend/dist/esm/splash_screen.d.ts +35 -0
  118. package/backend/dist/esm/splash_screen.js +148 -0
  119. package/backend/dist/esm/status.d.ts +60 -0
  120. package/backend/dist/esm/status.js +196 -0
  121. package/backend/dist/esm/stream.d.ts +75 -0
  122. package/backend/dist/esm/stream.js +947 -0
  123. package/backend/dist/esm/users.d.ts +111 -0
  124. package/backend/dist/esm/users.js +1908 -0
  125. package/backend/dist/esm/utils.d.ts +27 -0
  126. package/backend/dist/esm/utils.js +324 -0
  127. package/backend/dist/esm/view.d.ts +52 -0
  128. package/backend/dist/esm/view.js +561 -0
  129. package/backend/dist/esm/vinc.d.ts +2 -0
  130. package/backend/dist/esm/vinc.dev.d.ts +2 -0
  131. package/backend/dist/esm/vinc.dev.js +6 -0
  132. package/backend/dist/esm/vinc.js +6 -0
  133. package/backend/dist/esm/volt.d.ts +15 -0
  134. package/backend/dist/esm/volt.js +23 -0
  135. package/backend/dist/esm-dev/blacklist.d.ts +10 -0
  136. package/backend/dist/esm-dev/blacklist.js +49 -0
  137. package/backend/dist/esm-dev/cli.d.ts +2 -0
  138. package/backend/dist/esm-dev/cli.js +228 -0
  139. package/backend/dist/esm-dev/database.d.ts +364 -0
  140. package/backend/dist/esm-dev/database.js +1957 -0
  141. package/backend/dist/esm-dev/endpoint.d.ts +57 -0
  142. package/backend/dist/esm-dev/endpoint.js +421 -0
  143. package/backend/dist/esm-dev/file_watcher.d.ts +44 -0
  144. package/backend/dist/esm-dev/file_watcher.js +313 -0
  145. package/backend/dist/esm-dev/frontend.d.ts +13 -0
  146. package/backend/dist/esm-dev/frontend.js +27 -0
  147. package/backend/dist/esm-dev/image_endpoint.d.ts +24 -0
  148. package/backend/dist/esm-dev/image_endpoint.js +206 -0
  149. package/backend/dist/esm-dev/logger.d.ts +5 -0
  150. package/backend/dist/esm-dev/logger.js +13 -0
  151. package/backend/dist/esm-dev/meta.d.ts +50 -0
  152. package/backend/dist/esm-dev/meta.js +149 -0
  153. package/backend/dist/esm-dev/mutex.d.ts +24 -0
  154. package/backend/dist/esm-dev/mutex.js +48 -0
  155. package/backend/dist/esm-dev/payments/paddle.d.ts +161 -0
  156. package/backend/dist/esm-dev/payments/paddle.js +2261 -0
  157. package/backend/dist/esm-dev/plugins/browser.d.ts +36 -0
  158. package/backend/dist/esm-dev/plugins/browser.js +176 -0
  159. package/backend/dist/esm-dev/plugins/communication.d.ts +70 -0
  160. package/backend/dist/esm-dev/plugins/communication.js +169 -0
  161. package/backend/dist/esm-dev/plugins/css.d.ts +10 -0
  162. package/backend/dist/esm-dev/plugins/css.js +64 -0
  163. package/backend/dist/esm-dev/plugins/mail.d.ts +277 -0
  164. package/backend/dist/esm-dev/plugins/mail.js +1403 -0
  165. package/backend/dist/esm-dev/plugins/pdf.d.ts +757 -0
  166. package/backend/dist/esm-dev/plugins/pdf.js +1694 -0
  167. package/backend/dist/esm-dev/plugins/thread_monitor.d.ts +18 -0
  168. package/backend/dist/esm-dev/plugins/thread_monitor.js +120 -0
  169. package/backend/dist/esm-dev/plugins/ts/compiler.d.ts +132 -0
  170. package/backend/dist/esm-dev/plugins/ts/compiler.js +907 -0
  171. package/backend/dist/esm-dev/plugins/ts/preprocessing.d.ts +14 -0
  172. package/backend/dist/esm-dev/plugins/ts/preprocessing.js +724 -0
  173. package/backend/dist/esm-dev/rate_limit.d.ts +65 -0
  174. package/backend/dist/esm-dev/rate_limit.js +425 -0
  175. package/backend/dist/esm-dev/request.deprc.d.ts +48 -0
  176. package/backend/dist/esm-dev/request.deprc.js +572 -0
  177. package/backend/dist/esm-dev/response.deprc.d.ts +55 -0
  178. package/backend/dist/esm-dev/response.deprc.js +275 -0
  179. package/backend/dist/esm-dev/server.d.ts +311 -0
  180. package/backend/dist/esm-dev/server.js +3435 -0
  181. package/backend/dist/esm-dev/splash_screen.d.ts +35 -0
  182. package/backend/dist/esm-dev/splash_screen.js +148 -0
  183. package/backend/dist/esm-dev/status.d.ts +60 -0
  184. package/backend/dist/esm-dev/status.js +196 -0
  185. package/backend/dist/esm-dev/stream.d.ts +75 -0
  186. package/backend/dist/esm-dev/stream.js +947 -0
  187. package/backend/dist/esm-dev/users.d.ts +111 -0
  188. package/backend/dist/esm-dev/users.js +1908 -0
  189. package/backend/dist/esm-dev/utils.d.ts +27 -0
  190. package/backend/dist/esm-dev/utils.js +324 -0
  191. package/backend/dist/esm-dev/view.d.ts +52 -0
  192. package/backend/dist/esm-dev/view.js +561 -0
  193. package/backend/dist/esm-dev/vinc.d.ts +2 -0
  194. package/backend/dist/esm-dev/vinc.dev.d.ts +2 -0
  195. package/backend/dist/esm-dev/vinc.dev.js +6 -0
  196. package/backend/dist/esm-dev/vinc.js +6 -0
  197. package/backend/dist/esm-dev/volt.d.ts +15 -0
  198. package/backend/dist/esm-dev/volt.js +23 -0
  199. package/backend/src/blacklist.ts +69 -0
  200. package/backend/src/cli.js +245 -0
  201. package/backend/src/database.ts +2241 -0
  202. package/backend/src/endpoint.ts +494 -0
  203. package/backend/src/file_watcher.ts +359 -0
  204. package/backend/src/frontend.ts +35 -0
  205. package/backend/src/globals.d.ts +8 -0
  206. package/backend/src/image_endpoint.ts +258 -0
  207. package/backend/src/logger.ts +18 -0
  208. package/backend/src/meta.ts +202 -0
  209. package/backend/src/mutex.ts +51 -0
  210. package/backend/src/payments/paddle.ts +2659 -0
  211. package/backend/src/plugins/browser.ts +188 -0
  212. package/backend/src/plugins/communication.ts +204 -0
  213. package/backend/src/plugins/css.ts +84 -0
  214. package/backend/src/plugins/fonts/Menlo-Bold.ttf +0 -0
  215. package/backend/src/plugins/fonts/Menlo-Regular.ttf +0 -0
  216. package/backend/src/plugins/mail.ts +1720 -0
  217. package/backend/src/plugins/pdf.js +1932 -0
  218. package/backend/src/plugins/thread_monitor.ts +164 -0
  219. package/backend/src/plugins/ts/compiler.ts +1242 -0
  220. package/backend/src/plugins/ts/preprocessing.ts +812 -0
  221. package/backend/src/rate_limit.ts +503 -0
  222. package/backend/src/request.deprc.js +626 -0
  223. package/backend/src/response.deprc.js +354 -0
  224. package/backend/src/server.ts +4149 -0
  225. package/backend/src/splash_screen.ts +192 -0
  226. package/backend/src/status.ts +199 -0
  227. package/backend/src/stream.ts +1070 -0
  228. package/backend/src/users.ts +2077 -0
  229. package/backend/src/utils.ts +359 -0
  230. package/backend/src/view.ts +655 -0
  231. package/backend/src/vinc.dev.js +6 -0
  232. package/backend/src/vinc.ts +6 -0
  233. package/backend/src/volt.js +25 -0
  234. package/backend/tsconfig.cjs.json +29 -0
  235. package/backend/tsconfig.esm.dev.json +34 -0
  236. package/backend/tsconfig.esm.json +30 -0
  237. package/backend/tsconfig.json +2 -0
  238. package/frontend/compile.js +436 -0
  239. package/frontend/dist/elements/base.d.ts +9891 -0
  240. package/frontend/dist/elements/base.js +8818 -0
  241. package/frontend/dist/elements/module.d.ts +16 -0
  242. package/frontend/dist/elements/module.js +178 -0
  243. package/frontend/dist/modules/array.d.ts +37 -0
  244. package/frontend/dist/modules/array.js +284 -0
  245. package/frontend/dist/modules/auth.d.ts +45 -0
  246. package/frontend/dist/modules/auth.js +138 -0
  247. package/frontend/dist/modules/colors.d.ts +26 -0
  248. package/frontend/dist/modules/colors.js +340 -0
  249. package/frontend/dist/modules/compression.d.ts +6 -0
  250. package/frontend/dist/modules/compression.js +999 -0
  251. package/frontend/dist/modules/cookies.d.ts +17 -0
  252. package/frontend/dist/modules/cookies.js +166 -0
  253. package/frontend/dist/modules/date.d.ts +142 -0
  254. package/frontend/dist/modules/date.js +493 -0
  255. package/frontend/dist/modules/events.d.ts +7 -0
  256. package/frontend/dist/modules/events.js +90 -0
  257. package/frontend/dist/modules/google.d.ts +10 -0
  258. package/frontend/dist/modules/google.js +53 -0
  259. package/frontend/dist/modules/meta.d.ts +9 -0
  260. package/frontend/dist/modules/meta.js +45 -0
  261. package/frontend/dist/modules/mutex.d.ts +8 -0
  262. package/frontend/dist/modules/mutex.js +52 -0
  263. package/frontend/dist/modules/number.d.ts +12 -0
  264. package/frontend/dist/modules/number.js +8 -0
  265. package/frontend/dist/modules/object.d.ts +50 -0
  266. package/frontend/dist/modules/object.js +147 -0
  267. package/frontend/dist/modules/paddle.d.ts +1403 -0
  268. package/frontend/dist/modules/paddle.js +2641 -0
  269. package/frontend/dist/modules/scheme.d.ts +207 -0
  270. package/frontend/dist/modules/scheme.js +649 -0
  271. package/frontend/dist/modules/settings.d.ts +3 -0
  272. package/frontend/dist/modules/settings.js +4 -0
  273. package/frontend/dist/modules/statics.d.ts +4 -0
  274. package/frontend/dist/modules/statics.js +45 -0
  275. package/frontend/dist/modules/string.d.ts +163 -0
  276. package/frontend/dist/modules/string.js +291 -0
  277. package/frontend/dist/modules/support.d.ts +18 -0
  278. package/frontend/dist/modules/support.js +102 -0
  279. package/frontend/dist/modules/themes.d.ts +8 -0
  280. package/frontend/dist/modules/themes.js +17 -0
  281. package/frontend/dist/modules/user.d.ts +58 -0
  282. package/frontend/dist/modules/user.js +279 -0
  283. package/frontend/dist/modules/utils.d.ts +58 -0
  284. package/frontend/dist/modules/utils.js +1159 -0
  285. package/frontend/dist/types/gradient.d.ts +12 -0
  286. package/frontend/dist/types/gradient.js +79 -0
  287. package/frontend/dist/ui/border_button.d.ts +177 -0
  288. package/frontend/dist/ui/border_button.js +235 -0
  289. package/frontend/dist/ui/button.d.ts +42 -0
  290. package/frontend/dist/ui/button.js +114 -0
  291. package/frontend/dist/ui/canvas.d.ts +56 -0
  292. package/frontend/dist/ui/canvas.js +411 -0
  293. package/frontend/dist/ui/checkbox.d.ts +72 -0
  294. package/frontend/dist/ui/checkbox.js +277 -0
  295. package/frontend/dist/ui/code.d.ts +232 -0
  296. package/frontend/dist/ui/code.js +977 -0
  297. package/frontend/dist/ui/color.d.ts +1 -0
  298. package/frontend/dist/ui/color.js +110 -0
  299. package/frontend/dist/ui/context_menu.d.ts +30 -0
  300. package/frontend/dist/ui/context_menu.js +211 -0
  301. package/frontend/dist/ui/css.d.ts +10 -0
  302. package/frontend/dist/ui/css.js +44 -0
  303. package/frontend/dist/ui/divider.d.ts +18 -0
  304. package/frontend/dist/ui/divider.js +82 -0
  305. package/frontend/dist/ui/dropdown.d.ts +115 -0
  306. package/frontend/dist/ui/dropdown.js +446 -0
  307. package/frontend/dist/ui/for_each.d.ts +38 -0
  308. package/frontend/dist/ui/for_each.js +97 -0
  309. package/frontend/dist/ui/form.d.ts +25 -0
  310. package/frontend/dist/ui/form.js +227 -0
  311. package/frontend/dist/ui/frame_modes.d.ts +28 -0
  312. package/frontend/dist/ui/frame_modes.js +116 -0
  313. package/frontend/dist/ui/google_map.d.ts +31 -0
  314. package/frontend/dist/ui/google_map.js +111 -0
  315. package/frontend/dist/ui/gradient.d.ts +24 -0
  316. package/frontend/dist/ui/gradient.js +115 -0
  317. package/frontend/dist/ui/image.d.ts +138 -0
  318. package/frontend/dist/ui/image.js +570 -0
  319. package/frontend/dist/ui/input.d.ts +316 -0
  320. package/frontend/dist/ui/input.js +1187 -0
  321. package/frontend/dist/ui/link.d.ts +39 -0
  322. package/frontend/dist/ui/link.js +146 -0
  323. package/frontend/dist/ui/list.d.ts +33 -0
  324. package/frontend/dist/ui/list.js +161 -0
  325. package/frontend/dist/ui/loader_button.d.ts +108 -0
  326. package/frontend/dist/ui/loader_button.js +207 -0
  327. package/frontend/dist/ui/loaders.d.ts +60 -0
  328. package/frontend/dist/ui/loaders.js +150 -0
  329. package/frontend/dist/ui/popup.d.ts +84 -0
  330. package/frontend/dist/ui/popup.js +331 -0
  331. package/frontend/dist/ui/pseudo.d.ts +16 -0
  332. package/frontend/dist/ui/pseudo.js +81 -0
  333. package/frontend/dist/ui/scroller.d.ts +131 -0
  334. package/frontend/dist/ui/scroller.js +1251 -0
  335. package/frontend/dist/ui/slider.d.ts +35 -0
  336. package/frontend/dist/ui/slider.js +203 -0
  337. package/frontend/dist/ui/spacer.d.ts +20 -0
  338. package/frontend/dist/ui/spacer.js +83 -0
  339. package/frontend/dist/ui/span.d.ts +11 -0
  340. package/frontend/dist/ui/span.js +75 -0
  341. package/frontend/dist/ui/stack.d.ts +123 -0
  342. package/frontend/dist/ui/stack.js +344 -0
  343. package/frontend/dist/ui/steps.d.ts +72 -0
  344. package/frontend/dist/ui/steps.js +306 -0
  345. package/frontend/dist/ui/style.d.ts +12 -0
  346. package/frontend/dist/ui/style.js +78 -0
  347. package/frontend/dist/ui/switch.d.ts +44 -0
  348. package/frontend/dist/ui/switch.js +280 -0
  349. package/frontend/dist/ui/table.d.ts +118 -0
  350. package/frontend/dist/ui/table.js +411 -0
  351. package/frontend/dist/ui/tabs.d.ts +85 -0
  352. package/frontend/dist/ui/tabs.js +392 -0
  353. package/frontend/dist/ui/text.d.ts +19 -0
  354. package/frontend/dist/ui/text.js +88 -0
  355. package/frontend/dist/ui/theme.d.ts +25 -0
  356. package/frontend/dist/ui/theme.js +237 -0
  357. package/frontend/dist/ui/title.d.ts +36 -0
  358. package/frontend/dist/ui/title.js +127 -0
  359. package/frontend/dist/ui/ui.d.ts +38 -0
  360. package/frontend/dist/ui/ui.js +41 -0
  361. package/frontend/dist/ui/view.d.ts +25 -0
  362. package/frontend/dist/ui/view.js +93 -0
  363. package/frontend/dist/volt.d.ts +22 -0
  364. package/frontend/dist/volt.js +27 -0
  365. package/frontend/exports.json +1340 -0
  366. package/frontend/src/css/adyen.css +92 -0
  367. package/frontend/src/css/volt.css +65 -0
  368. package/frontend/src/elements/base.ts +16790 -0
  369. package/frontend/src/elements/module.ts +184 -0
  370. package/frontend/src/elements/types.d.ts +155 -0
  371. package/frontend/src/modules/array.ts +366 -0
  372. package/frontend/src/modules/auth.ts +188 -0
  373. package/frontend/src/modules/colors.ts +449 -0
  374. package/frontend/src/modules/compression.ts +67 -0
  375. package/frontend/src/modules/cookies.ts +182 -0
  376. package/frontend/src/modules/date.js +535 -0
  377. package/frontend/src/modules/date.ts +583 -0
  378. package/frontend/src/modules/events.ts +96 -0
  379. package/frontend/src/modules/google.ts +60 -0
  380. package/frontend/src/modules/meta.ts +59 -0
  381. package/frontend/src/modules/mutex.ts +59 -0
  382. package/frontend/src/modules/number.ts +20 -0
  383. package/frontend/src/modules/object.ts +212 -0
  384. package/frontend/src/modules/paddle.ts +2990 -0
  385. package/frontend/src/modules/scheme.ts +740 -0
  386. package/frontend/src/modules/settings.ts +5 -0
  387. package/frontend/src/modules/statics.ts +47 -0
  388. package/frontend/src/modules/string.ts +500 -0
  389. package/frontend/src/modules/support.ts +118 -0
  390. package/frontend/src/modules/themes.ts +24 -0
  391. package/frontend/src/modules/user.ts +321 -0
  392. package/frontend/src/modules/utils.ts +1260 -0
  393. package/frontend/src/static/admin/admin.png +0 -0
  394. package/frontend/src/static/admin/password.webp +0 -0
  395. package/frontend/src/static/icons/copy.webp +0 -0
  396. package/frontend/src/static/payments/arrow.long.webp +0 -0
  397. package/frontend/src/static/payments/arrow.long2.webp +0 -0
  398. package/frontend/src/static/payments/cancelled.webp +0 -0
  399. package/frontend/src/static/payments/check.sign.webp +0 -0
  400. package/frontend/src/static/payments/check.webp +0 -0
  401. package/frontend/src/static/payments/close.webp +0 -0
  402. package/frontend/src/static/payments/error.webp +0 -0
  403. package/frontend/src/static/payments/exclamation.webp +0 -0
  404. package/frontend/src/static/payments/minus.webp +0 -0
  405. package/frontend/src/static/payments/party.webp +0 -0
  406. package/frontend/src/static/payments/plus.webp +0 -0
  407. package/frontend/src/static/payments/shopping_cart.webp +0 -0
  408. package/frontend/src/static/payments/trash.webp +0 -0
  409. package/frontend/src/types/global.d.ts +4 -0
  410. package/frontend/src/types/gradient.ts +87 -0
  411. package/frontend/src/ui/any_element.d.ts +5 -0
  412. package/frontend/src/ui/border_button.ts +320 -0
  413. package/frontend/src/ui/button.ts +62 -0
  414. package/frontend/src/ui/canvas.ts +431 -0
  415. package/frontend/src/ui/checkbox.ts +284 -0
  416. package/frontend/src/ui/code.ts +1049 -0
  417. package/frontend/src/ui/color.ts +117 -0
  418. package/frontend/src/ui/context_menu.ts +194 -0
  419. package/frontend/src/ui/css.ts +57 -0
  420. package/frontend/src/ui/divider.ts +28 -0
  421. package/frontend/src/ui/dropdown.ts +503 -0
  422. package/frontend/src/ui/for_each.ts +71 -0
  423. package/frontend/src/ui/form.ts +208 -0
  424. package/frontend/src/ui/frame_modes.ts +140 -0
  425. package/frontend/src/ui/google_map.ts +70 -0
  426. package/frontend/src/ui/gradient.ts +73 -0
  427. package/frontend/src/ui/image.ts +587 -0
  428. package/frontend/src/ui/input.ts +1284 -0
  429. package/frontend/src/ui/link.ts +77 -0
  430. package/frontend/src/ui/list.ts +88 -0
  431. package/frontend/src/ui/loader_button.ts +192 -0
  432. package/frontend/src/ui/loaders.ts +126 -0
  433. package/frontend/src/ui/popup.ts +370 -0
  434. package/frontend/src/ui/pseudo.ts +33 -0
  435. package/frontend/src/ui/scroller.ts +1324 -0
  436. package/frontend/src/ui/slider.ts +215 -0
  437. package/frontend/src/ui/spacer.ts +29 -0
  438. package/frontend/src/ui/span.ts +23 -0
  439. package/frontend/src/ui/stack.ts +238 -0
  440. package/frontend/src/ui/steps.ts +334 -0
  441. package/frontend/src/ui/style.ts +26 -0
  442. package/frontend/src/ui/switch.ts +286 -0
  443. package/frontend/src/ui/table.ts +323 -0
  444. package/frontend/src/ui/tabs.ts +441 -0
  445. package/frontend/src/ui/text.ts +38 -0
  446. package/frontend/src/ui/theme.ts +279 -0
  447. package/frontend/src/ui/title.ts +64 -0
  448. package/frontend/src/ui/ui.ts +47 -0
  449. package/frontend/src/ui/view.ts +44 -0
  450. package/frontend/src/volt.ts +31 -0
  451. package/package.json +58 -0
@@ -0,0 +1,184 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+
6
+ // Import elements create func.
7
+ export * from "./base.js";
8
+ import {
9
+ VElement,
10
+ extend as extend_velement,
11
+ wrapper as _wrapper,
12
+ create_null as _create_null,
13
+ } from "./base.js"
14
+
15
+ export namespace Elements {
16
+
17
+ // Get by id.
18
+ // @note: always use VElement as return type since this is most likely the case and avoids type casting for users.
19
+ /* @docs:
20
+ @nav: Frontend
21
+ @chapter: Elements
22
+ @title: Get Element by ID
23
+ @desc: Get an element by its ID.
24
+ @param:
25
+ @name: id
26
+ @description The ID of the element.
27
+ */
28
+ export function get(id: string): VElement {
29
+ const e = document.getElementById(id);
30
+ if (e == null) {
31
+ throw new Error(`Unable to find element with id "${id}".`);
32
+ }
33
+ return e as any as VElement;
34
+ }
35
+
36
+ // Get by id (alias).
37
+ // @note: always use VElement as return type since this is most likely the case and avoids type casting for users.
38
+ /* @docs:
39
+ @nav: Frontend
40
+ @chapter: Elements
41
+ @title: Get Element by ID (Alias)
42
+ @desc: Alias for `get` to get an element by its ID.
43
+ @param:
44
+ @name: id
45
+ @description The ID of the element.
46
+ */
47
+ export function get_by_id(id: string): VElement {
48
+ return Elements.get(id);
49
+ }
50
+
51
+ // Click an element by id.
52
+ /* @docs:
53
+ @nav: Frontend
54
+ @chapter: Elements
55
+ @title: Click Element by ID
56
+ @desc: Programmatically clicks an element by its ID.
57
+ @param:
58
+ @name: id
59
+ @description The ID of the element.
60
+ */
61
+ export function click(id: string): void {
62
+ const element = document.getElementById(id);
63
+ if (element) {
64
+ element.click();
65
+ } else {
66
+ throw new Error(`Unable to find element with id "${id}".`);
67
+ }
68
+ }
69
+
70
+ // Register a custom type.
71
+ /* @docs:
72
+ @nav: Frontend
73
+ @chapter: Elements
74
+ @title: Register Custom Type
75
+ @desc: Registers a custom element type.
76
+ @param:
77
+ @name: type
78
+ @description The custom element type (class).
79
+ @param:
80
+ @name: tag
81
+ @description Optional tag name to extend.
82
+ */
83
+ export function register_type(type: any, tag?: string): void {
84
+ (type as any)._is_registered = true;
85
+ // customElements.define(type.name, type, { extends: tag || (type as any).element_tag });
86
+ customElements.define("v-" + type.name.toLowerCase(), type, { extends: tag || (type as any).element_tag });
87
+ }
88
+
89
+ // Register decorator.
90
+ /* @docs:
91
+ @nav: Frontend
92
+ @chapter: Elements
93
+ @title: Register Decorator
94
+ @desc: Registers a class as a custom element.
95
+ @param:
96
+ @name: constructor
97
+ @description The class constructor to register.
98
+ */
99
+ export function register<T extends { new(...args: any[]): {} }>(constructor: T): void {
100
+ Elements.register_type(constructor);
101
+ }
102
+
103
+ // Create a constructor wrapper.
104
+ export const wrapper = _wrapper;
105
+
106
+ // Create a shared null element mainly for typescript types.
107
+ export const create_null = _create_null;
108
+
109
+ // Submit multiple elements by id or element.
110
+ // When one is not filled in then an error is thrown.
111
+ // When an input is not required, no errors will be thrown.
112
+ // An object will be returned with each input's id as the key and the input's value as value.
113
+ // Only supported extended input elements like `ExtendedInput`.
114
+ /* @docs:
115
+ @nav: Frontend
116
+ @chapter: Elements
117
+ @title: Submit Elements
118
+ @desc: Submits multiple elements by ID or reference.
119
+ @deprecated: true
120
+ @param:
121
+ @name: elements
122
+ @description A list of element IDs or element references to submit.
123
+ */
124
+ export function submit(...elements: (string | VElement | HTMLElement)[]): Record<string, any> {
125
+ const params: Record<string, any> = {};
126
+ let error;
127
+ for (let i = 0; i < elements.length; i++) {
128
+ try {
129
+ let element = elements[i];
130
+ if (typeof element === "string") {
131
+ element = Elements.get(element);
132
+ }
133
+ const id = (element as any).id();
134
+ if (id == null || id === "") {
135
+ continue;
136
+ }
137
+ if ((element as any).required() !== true) {
138
+ params[id] = (element as any).value();
139
+ } else {
140
+ params[id] = (element as any).submit();
141
+ }
142
+ } catch (e) {
143
+ error = e;
144
+ }
145
+ }
146
+ if (error) {
147
+ throw error;
148
+ }
149
+ return params;
150
+ }
151
+
152
+ // Forward a function to a child so a user can easily create functions on the parent like border_radius() which actually set the border radius of a child.
153
+ // The new function still returns `this`.
154
+ /* @docs:
155
+ @nav: Frontend
156
+ @chapter: Elements
157
+ @title: Forward Function to Child
158
+ @desc: Forwards a function to a child element.
159
+ @param:
160
+ @name: func_name
161
+ @description The name of the function to forward.
162
+ @param:
163
+ @name: child
164
+ @description The child element or a function that returns the child element.
165
+ */
166
+ export function forward_func_to_child(func_name: string, child: any): (val?: any) => any {
167
+ return function (this: any, val?: any) {
168
+ if (typeof child === "function") {
169
+ child = child(this);
170
+ }
171
+ if (val == null) {
172
+ return child[func_name]();
173
+ }
174
+ child[func_name](val);
175
+ return this;
176
+ };
177
+ }
178
+
179
+ // Update the extend_velement function to use proper types
180
+ export const extend = extend_velement;
181
+
182
+ // Create.
183
+ // export const create = create_velement;
184
+ };
@@ -0,0 +1,155 @@
1
+
2
+ // Add some html properties since VBaseElement wants properties of them all since is is mixed in.
3
+ interface HTMLElement extends VElementExtensions {
4
+
5
+ setAttribute(name: string, value: string | number | boolean): void;
6
+
7
+ acceptCharset: any;
8
+ name: any;
9
+ hreflang: any;
10
+ readOnly: any;
11
+ autoplay: any;
12
+ maxlength: any;
13
+ minlength: any;
14
+ dateTime: any;
15
+ srcset?: string
16
+ srclang?: string;
17
+ srcdoc?: string;
18
+ novalidate?: boolean;
19
+ isMap?: boolean;
20
+ httpEquiv?: string;
21
+ formAction?: string;
22
+ rowspan?: number;
23
+ autocomplete?: "" | "on" | "off";
24
+ useMap?: string;
25
+
26
+ // value(): string;
27
+ // value(value: string): this;
28
+ // type(): string;
29
+ // type(value: string): this;
30
+ // title(): string;
31
+ // title(value: string): this;
32
+ // target(): string;
33
+ // target(value: string): this;
34
+ // pattern(): string;
35
+ // pattern(value: string): this;
36
+ // step(): string;
37
+ // step(value: string): this;
38
+ // start(): number | null;
39
+ // start(value: number): this;
40
+ // multiple(): boolean;
41
+ // multiple(value: boolean): this;
42
+ // checked(): boolean;
43
+ // checked(value: boolean): this;
44
+ // required(): boolean;
45
+ // required(value: boolean): this;
46
+
47
+ // rows(): null | number
48
+ // rows(value: number): this;
49
+ // span(): null | number
50
+ // span(value: number): this;
51
+
52
+ //
53
+
54
+ // alt(): string;
55
+ // alt(value: string): this;
56
+ // accept(): string;
57
+ // accept(value: string): this;
58
+ // action(): string;
59
+ // action(value: string): this;
60
+ // enctype(): string;
61
+ // enctype(value: string): this;
62
+ // id(): string;
63
+ // id(value: string): this;
64
+ // lang(): string;
65
+ // lang(value: string): this;
66
+ // max(): string;
67
+ // max(value: string): this;
68
+ // method(): string;
69
+ // method(value: string): this;
70
+ // min(): string;
71
+ // min(value: string): this;
72
+ // placeholder(): string;
73
+ // placeholder(value: string): this;
74
+ // rel(): string;
75
+ // rel(value: string): this;
76
+ // shape(): string;
77
+ // shape(value: string): this;
78
+
79
+ // download(): string;
80
+ // download(value: string): this;
81
+ // charset(): string;
82
+ // charset(value: string): this;
83
+ // cite(): string;
84
+ // cite(value: string): this;
85
+ // cols(): null | number
86
+ // cols(value: number): this;
87
+ // colspan(): null | number
88
+ // colspan; (value: number): this;
89
+ // controls(): boolean;
90
+ // controls(value: boolean): this;
91
+ // coords(): string;
92
+ // coords(value: string): this;
93
+ // data(): string;
94
+ // data(value: string): this;
95
+ // async(): boolean;
96
+ // async(value: boolean): this;
97
+ // default(): boolean;
98
+ // default(value: boolean): this;
99
+ // defer(): boolean;
100
+ // defer(value: boolean): this;
101
+ // dir(): string;
102
+ // dir(value: string): this;
103
+ // dirname(): string;
104
+ // dirname(value: string): this;
105
+ // disabled(): boolean;
106
+ // disabled(value: boolean): this;
107
+ // draggable(): boolean;
108
+ // draggable(value: boolean): this;
109
+ // for(): string;
110
+ // for(value: string): this;
111
+ // headers(): string;
112
+ // headers(value: string): this;
113
+ // high(): string;
114
+ // high(value: string | number): this;
115
+ // href(): string;
116
+ // href(value: string): this;
117
+ // kind(): string;
118
+ // kind(value: string): this;
119
+ // label(): string;
120
+ // label(value: string): this;
121
+ // loop(): boolean;
122
+ // loop(value: boolean): this;
123
+ // low(): string;
124
+ // low(value: string | number): this;
125
+ // muted(): boolean;
126
+ // muted(value: boolean): this;
127
+ // open(): boolean;
128
+ // open(value: boolean): this;
129
+ // optimum(): null | number
130
+ // optimum(value: number): this;
131
+ // poster(): string;
132
+ // poster(value: string): this;
133
+ // preload(): string;
134
+ // preload(value: string): this;
135
+ // reversed(): boolean;
136
+ // reversed(value: boolean): this;
137
+ // sandbox(): string;
138
+ // sandbox(value: string): this;
139
+ // scope(): string;
140
+ // scope(value: string): this;
141
+ // selected(): boolean;
142
+ // selected(value: boolean): this;
143
+ // shape(): string;
144
+ // shape(value: string): this;
145
+ // span(): null | number;
146
+ // span(value: number): this;
147
+ // size(): null | number;
148
+ // size(value: number): this;
149
+ // sizes(): string;
150
+ // sizes(value: string): this;
151
+ // span(): string;
152
+ // span(value: string): this;
153
+ // src(): string;
154
+ // src(value: string): this;
155
+ }
@@ -0,0 +1,366 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+
6
+ declare global {
7
+ interface Array<T> {
8
+
9
+ // Append alias for push.
10
+ append(...items: T[]): number;
11
+
12
+ // Get the first item.
13
+ first(): T | undefined;
14
+
15
+ // Get the last item.
16
+ last(): T | undefined;
17
+
18
+ // Iteration functions
19
+ iterate(handler: (item: T, index: number, array: T[]) => any): any;
20
+ iterate(start: number, handler: (item: T, index: number, array: T[]) => any): any;
21
+ iterate(start: number, end: number, handler: (item: T, index: number, array: T[]) => any): any;
22
+
23
+ // Asynchronous iteration functions
24
+ iterate_async(handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any[]>;
25
+ iterate_async(start: number, handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any[]>;
26
+ iterate_async(start: number, end: number, handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any[]>;
27
+
28
+ iterate_async_await(handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any>;
29
+ iterate_async_await(start: number, handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any>;
30
+ iterate_async_await(start: number, end: number, handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any>;
31
+
32
+ // Iteration function to build an array by appending returned values
33
+ iterate_append(handler: (item: T, index: number, array: T[]) => any): any[];
34
+ iterate_append(start: number, handler: (item: T, index: number, array: T[]) => any): any[];
35
+ iterate_append(start: number, end: number, handler: (item: T, index: number, array: T[]) => any): any[];
36
+
37
+ // Reversed iteration functions
38
+ iterate_reversed(handler: (item: T, index: number, array: T[]) => any): any;
39
+ iterate_reversed(start: number, handler: (item: T, index: number, array: T[]) => any): any;
40
+ iterate_reversed(start: number, end: number, handler: (item: T, index: number, array: T[]) => any): any;
41
+
42
+ iterate_reversed_async(handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any[]>;
43
+ iterate_reversed_async(start: number, handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any[]>;
44
+ iterate_reversed_async(start: number, end: number, handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any[]>;
45
+
46
+ iterate_reversed_async_await(handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any>;
47
+ iterate_reversed_async_await(start: number, handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any>;
48
+ iterate_reversed_async_await(start: number, end: number, handler: (item: T, index: number, array: T[]) => Promise<any>): Promise<any>;
49
+
50
+ // Drop methods
51
+ drop(item: T): T[];
52
+
53
+ drop_index(index: number): T[];
54
+
55
+ // Remove duplicates
56
+ drop_duplicates(): T[];
57
+
58
+ // Limit from end
59
+ limit_from_end(limit: number): T[];
60
+
61
+ // Remove items equal to the specified item
62
+ remove(item: T): T[];
63
+
64
+ // Equality check
65
+ eq(otherArray: any[]): boolean;
66
+ eq(x: any, y: any): boolean;
67
+
68
+ // Divide into nested arrays
69
+ divide(x: number): T[][];
70
+ }
71
+ }
72
+ export {}; // is required.
73
+
74
+ // Append alias for push.
75
+ Array.prototype.append = Array.prototype.push;
76
+
77
+ // Get the first and last item.
78
+ Array.prototype.first = function() {
79
+ return this[0];
80
+ };
81
+
82
+ // Get the first and last item.
83
+ Array.prototype.last = function() {
84
+ return this[this.length - 1];
85
+ };
86
+
87
+ // Iteration function for arrays.
88
+ Array.prototype.iterate = function(start: any, end?: any, handler?: any): any {
89
+ if (typeof start === "function") {
90
+ handler = start;
91
+ start = null;
92
+ }
93
+ if (start == null) {
94
+ start = 0;
95
+ }
96
+ if (end == null) {
97
+ end = this.length;
98
+ }
99
+ for (let i = start; i < end; i++) {
100
+ const res = handler(this[i]);
101
+ if (res != null && !(res instanceof Promise)) {
102
+ return res;
103
+ }
104
+ }
105
+ return null;
106
+ };
107
+ Array.prototype.iterate_async = function(start: any, end?: any, handler?: any): any {
108
+ if (typeof start === "function") {
109
+ handler = start;
110
+ start = null;
111
+ }
112
+ if (start == null) {
113
+ start = 0;
114
+ }
115
+ if (end == null) {
116
+ end = this.length;
117
+ }
118
+ let promises: Promise<any>[] = [];
119
+ for (let i = start; i < end; i++) {
120
+ const res = handler(this[i]);
121
+ if (res != null && res instanceof Promise) {
122
+ promises.push(res);
123
+ }
124
+ }
125
+ return promises;
126
+ };
127
+ Array.prototype.iterate_async_await = async function(start: any, end?: any, handler?: any): Promise<any> {
128
+ if (typeof start === "function") {
129
+ handler = start;
130
+ start = null;
131
+ }
132
+ if (start == null) {
133
+ start = 0;
134
+ }
135
+ if (end == null) {
136
+ end = this.length;
137
+ }
138
+ for (let i = start; i < end; i++) {
139
+ const res = handler(this[i]);
140
+ if (res != null && res instanceof Promise) {
141
+ const pres = await res;
142
+ if (pres != null) {
143
+ return pres;
144
+ }
145
+ }
146
+ }
147
+ return null;
148
+ };
149
+
150
+ // Iteration function for arrays to build an array by another array, it appends all the returned callback values into an array and returns that array. Quite useful for volt.
151
+ Array.prototype.iterate_append = function(start: any, end?: any, handler?: any): any {
152
+ if (typeof start === "function") {
153
+ handler = start;
154
+ start = null;
155
+ }
156
+ if (start == null) {
157
+ start = 0;
158
+ }
159
+ if (end == null) {
160
+ end = this.length;
161
+ }
162
+ const items: any[] = [];
163
+ for (let i = start; i < end; i++) {
164
+ items.append(handler(this[i]));
165
+ }
166
+ return items;
167
+ };
168
+
169
+ // Iterate an array reversed.
170
+ Array.prototype.iterate_reversed = function(start: any, end?: any, handler?: any): any {
171
+ if (handler == null && start != null) {
172
+ handler = start;
173
+ start = null;
174
+ }
175
+ if (start == null) {
176
+ start = 0;
177
+ }
178
+ if (end == null) {
179
+ end = this.length;
180
+ }
181
+ for (let i = end - 1; i >= start; i--) {
182
+ const res = handler(this[i]);
183
+ if (res != null && !(res instanceof Promise)) {
184
+ return res;
185
+ }
186
+ }
187
+ return null;
188
+ };
189
+ Array.prototype.iterate_reversed_async = function(start: any, end?: any, handler?: any): any {
190
+ if (handler == null && start != null) {
191
+ handler = start;
192
+ start = null;
193
+ }
194
+ if (start == null) {
195
+ start = 0;
196
+ }
197
+ if (end == null) {
198
+ end = this.length;
199
+ }
200
+ let promises: Promise<any>[] = [];
201
+ for (let i = end - 1; i >= start; i--) {
202
+ const res = handler(this[i]);
203
+ if (res != null && res instanceof Promise) {
204
+ promises.push(res);
205
+ }
206
+ }
207
+ return promises;
208
+ };
209
+ Array.prototype.iterate_reversed_async_await = async function(start: any, end?: any, handler?: any): Promise<any> {
210
+ if (handler == null && start != null) {
211
+ handler = start;
212
+ start = null;
213
+ }
214
+ if (start == null) {
215
+ start = 0;
216
+ }
217
+ if (end == null) {
218
+ end = this.length;
219
+ }
220
+ for (let i = end - 1; i >= start; i--) {
221
+ const res = handler(this[i]);
222
+ if (res != null && res instanceof Promise) {
223
+ const pres = await res;
224
+ if (pres != null) {
225
+ return pres;
226
+ }
227
+ }
228
+ }
229
+ return null;
230
+ };
231
+
232
+ // Drop an item by the item itself.
233
+ Array.prototype.drop = function(item) {
234
+ // @ts-expect-error
235
+ const dropped = new this.constructor(); // for when a class extends Array.
236
+ for (let i = 0; i < this.length; i++) {
237
+ if (this[i] !== item) {
238
+ dropped.push(this[i])
239
+ }
240
+ }
241
+ return dropped;
242
+ };
243
+
244
+ // Drop an item by index.
245
+ Array.prototype.drop_index = function(index) {
246
+ // @ts-expect-error
247
+ const dropped = new this.constructor(); // for when a class extends Array.
248
+ for (let i = 0; i < this.length; i++) {
249
+ if (i != index) {
250
+ dropped.push(this[i])
251
+ }
252
+ }
253
+ return dropped;
254
+ };
255
+
256
+ // Drop duplicate items from an array.
257
+ Array.prototype.drop_duplicates = function() {
258
+ return this.reduce((accumulator, val) => {
259
+ if (!accumulator.includes(val)) {
260
+ accumulator.push(val);
261
+ }
262
+ return accumulator;
263
+ }, []);
264
+ }
265
+
266
+ // Limit from end, always creates a new array.
267
+ Array.prototype.limit_from_end = function<T extends any>(limit) {
268
+ let limited: T[] = [];
269
+ if (this.length > limit) {
270
+ for (let i = this.length - limit; i < this.length; i++) {
271
+ limited.push(this[i]);
272
+ }
273
+ } else {
274
+ for (let i = 0; i < this.length; i++) {
275
+ limited.push(this[i]);
276
+ }
277
+ }
278
+ return limited;
279
+ }
280
+
281
+ // Remove all items that equal the item from the array.
282
+ Array.prototype.remove = function<T extends any>(item: T) {
283
+ let removed: T[] = [];
284
+ this.iterate((i) => {
285
+ if (i != item) {
286
+ removed.push(i);
287
+ }
288
+ })
289
+ return removed;
290
+ };
291
+
292
+ // Check if an array equals another array.
293
+ // When the second parameter is not passed `this` will be used as `x` and `x` will be used as `y`.
294
+ Array.prototype.eq = function(x?: any[], y?: any[]) {
295
+ const eq = (x, y) => {
296
+
297
+ // Arrays.
298
+ if (Array.isArray(x)) {
299
+ if (
300
+ Array.isArray(y) === false ||
301
+ x.length !== y.length
302
+ ) {
303
+ return false;
304
+ }
305
+ for (let i = 0; i < x.length; i++) {
306
+ if (typeof x[i] === "object" || typeof y[i] === "object") {
307
+ const result = eq(x[i], y[i]);
308
+ if (result === false) {
309
+ return false;
310
+ }
311
+ } else if (x[i] !== y[i]) {
312
+ return false;
313
+ }
314
+ }
315
+ return true;
316
+ }
317
+
318
+ // Objects.
319
+ else if (typeof x === "object") {
320
+ if (
321
+ typeof y !== "object" ||
322
+ Array.isArray(y)
323
+ ) {
324
+ return false;
325
+ }
326
+ const x_keys = Object.keys(x);
327
+ const y_keys = Object.keys(y);
328
+ if (eq(x_keys, y_keys) === false) {
329
+ return false;
330
+ }
331
+ for (let i = 0; i < x_keys.length; i++) {
332
+ if (typeof x[x_keys[i]] === "object" || typeof y[y_keys[i]] === "object") {
333
+ const result = eq(x[x_keys[i]], y[y_keys[i]]);
334
+ if (result === false) {
335
+ return false;
336
+ }
337
+ } else if (x[x_keys[i]] !== y[y_keys[i]]) {
338
+ return false;
339
+ }
340
+ }
341
+ return true;
342
+ }
343
+
344
+ // Others.
345
+ else if (typeof x !== typeof y) { return false; }
346
+ return x === y;
347
+ }
348
+ if (y == null) {
349
+ y = x;
350
+ x = this;
351
+ }
352
+ return eq(x, y);
353
+ }
354
+
355
+ // Divide into nested arrays.
356
+ Array.prototype.divide = function(x) {
357
+ if (typeof x !== 'number' || x <= 0) {
358
+ throw new Error('Number of nested arrays must be a positive number');
359
+ }
360
+ const result: any[] = [];
361
+ const nested_len = Math.ceil(this.length / x);
362
+ for (let i = 0; i < this.length; i += nested_len) {
363
+ result.push(this.slice(i, i + nested_len));
364
+ }
365
+ return result;
366
+ }