@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,313 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+ // ---------------------------------------------------------
6
+ // Libraries.
7
+ import * as fs from "fs";
8
+ import * as path from "path";
9
+ import { spawn } from "child_process";
10
+ import { vlib } from "./vinc.js";
11
+ import { logger, LogSource } from "./logger.js";
12
+ // ---------------------------------------------------------
13
+ // Static endpoints file watcher watcher only used for checking static files with reloads.
14
+ class StaticFileWatcher {
15
+ server;
16
+ mtimes;
17
+ endpoints;
18
+ // @ts-ignore
19
+ log_source;
20
+ interval;
21
+ constructor(server) {
22
+ this.server = server;
23
+ this.mtimes = new Map();
24
+ this.endpoints = new Map();
25
+ this.log_source = new LogSource("StaticFileWatcher");
26
+ }
27
+ async start() {
28
+ // Set interval.
29
+ this.interval = setInterval(async () => {
30
+ // Changed endpoints.
31
+ const changed_endpoints = [];
32
+ let changed_aspect_ratio = false;
33
+ // Check file paths.
34
+ for (const endpoint of this.endpoints.values()) {
35
+ if (endpoint._path && !endpoint.view?.is_js_ts_view) {
36
+ const path = new vlib.Path(endpoint._path);
37
+ if (path.mtime !== this.mtimes.get(endpoint._path)) {
38
+ if (this.mtimes.get(endpoint._path) != null) {
39
+ logger.log(1, this.log_source, `Refreshing endpoint ${endpoint.method}:${endpoint.endpoint}.`);
40
+ // Image.
41
+ if (endpoint.is_image_endpoint) {
42
+ endpoint._clear_cache();
43
+ const aspect_ratio = await endpoint.get_aspect_ratio();
44
+ if (aspect_ratio && this.server.statics_aspect_ratios.get(endpoint.endpoint) !== aspect_ratio) {
45
+ changed_aspect_ratio = true;
46
+ this.server.statics_aspect_ratios.set(endpoint.endpoint, aspect_ratio);
47
+ }
48
+ }
49
+ // Static file.
50
+ else if (endpoint.view == null) {
51
+ endpoint._load_data_by_path(this.server);
52
+ changed_endpoints.push(endpoint.endpoint);
53
+ }
54
+ // Refresh browser.
55
+ if (this.server.browser_preview) {
56
+ await this.server.browser_preview.refresh(endpoint.endpoint);
57
+ }
58
+ }
59
+ this.mtimes.set(endpoint._path, path.mtime);
60
+ }
61
+ }
62
+ }
63
+ // Iterate all endpoints using view to check if any included scripts have changed.
64
+ for (const endpoint of this.endpoints.values()) {
65
+ if (endpoint.view && !endpoint.view?.is_js_ts_view) {
66
+ let changed = changed_aspect_ratio;
67
+ if (!changed && changed_endpoints.length > 0) {
68
+ changed = endpoint.view._embedded_sources.some(url => {
69
+ return changed_endpoints.includes(url);
70
+ });
71
+ }
72
+ if (changed) {
73
+ logger.log(1, this.log_source, `Refreshing endpoint ${endpoint.method}:${endpoint.endpoint}.`);
74
+ endpoint._refresh(this.server);
75
+ if (this.server.browser_preview) {
76
+ await this.server.browser_preview.refresh(endpoint.endpoint);
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }, 500);
82
+ }
83
+ add(endpoint) {
84
+ if (endpoint._path) {
85
+ this.mtimes.set(endpoint._path, new vlib.Path(endpoint._path).mtime);
86
+ }
87
+ this.endpoints.set(endpoint.endpoint, endpoint);
88
+ }
89
+ has(endpoint) {
90
+ return this.endpoints.has(endpoint);
91
+ }
92
+ stop() {
93
+ if (this.interval) {
94
+ clearInterval(this.interval);
95
+ }
96
+ }
97
+ }
98
+ // ---------------------------------------------------------
99
+ // File watcher watching entire files and restarting when needed.
100
+ /* @docs:
101
+ * @nav: Backend
102
+ @chapter: Server
103
+ @title: FileWatcher
104
+ @description:
105
+ Used to watch all included files and restart the server when any changes have been made.
106
+
107
+ @parameter:
108
+ @name: source
109
+ @description: The path to the source directory to watch.
110
+ @type: string
111
+ @parameter:
112
+ @name: config
113
+ @description: The path to the server's configuration file.
114
+ @type: string
115
+ @parameter:
116
+ @name: interval
117
+ @description: The interval in milliseconds between file change checks.
118
+ @type: number
119
+ @parameter:
120
+ @name: start_file
121
+ @description: The optional start js file to start the server.
122
+ @type: string
123
+ */
124
+ class FileWatcher {
125
+ source;
126
+ config;
127
+ interval;
128
+ excluded;
129
+ additional_paths;
130
+ start_file;
131
+ // @ts-ignore
132
+ log_source;
133
+ args;
134
+ mtimes;
135
+ promise;
136
+ proc;
137
+ has_changed = false;
138
+ _com_file;
139
+ constructor({ source, config = undefined, interval = 750, excluded = [], additional_paths = [], start_file = undefined, }) {
140
+ // Arguments.
141
+ // this.source = source == null ? source : new vlib.Path(source).abs().str();
142
+ this.config = config;
143
+ this.interval = interval;
144
+ this.excluded = excluded ?? [];
145
+ this.excluded = this.excluded.filter(Boolean).map(path => new vlib.Path(path).abs().str());
146
+ this.start_file = start_file;
147
+ // Check source.
148
+ if (source) {
149
+ source = new vlib.Path(source).abs().str();
150
+ }
151
+ if (source instanceof vlib.Path) {
152
+ source = source.str();
153
+ }
154
+ this.source = source;
155
+ if (this.source == null) {
156
+ throw Error("Define argument: source.");
157
+ }
158
+ this.log_source = new LogSource("FileWatcher");
159
+ // Check if the excluded paths exist for user mistakes, these happen often.
160
+ this.excluded.forEach(path => {
161
+ if (!new vlib.Path(path).exists()) {
162
+ logger.warn(0, this.log_source, `Excluded file watcher path ${path} does not exist.`);
163
+ }
164
+ });
165
+ // Attributes.
166
+ this.additional_paths = additional_paths.map(path => new vlib.Path(path).abs().str());
167
+ this.args = [];
168
+ this.mtimes = {};
169
+ this.promise = new Promise(() => { });
170
+ }
171
+ // Add path.
172
+ add_path(path) {
173
+ try {
174
+ const add = new vlib.Path(path).abs().str();
175
+ logger.log(2, this.log_source, "Add file watcher exclude", add);
176
+ this.additional_paths.push(add);
177
+ }
178
+ catch (e) {
179
+ logger.warn(0, this.log_source, `Additional file watcher path ${path.toString()} does not exist.`);
180
+ }
181
+ }
182
+ // Add exclude.
183
+ add_exclude(path) {
184
+ try {
185
+ const add = new vlib.Path(path).abs().str();
186
+ logger.log(2, this.log_source, "Add file watcher exclude", add);
187
+ this.excluded.push(add);
188
+ }
189
+ catch (e) {
190
+ logger.warn(0, this.log_source, `Excluded file watcher path ${path.toString()} does not exist.`);
191
+ }
192
+ }
193
+ // Start.
194
+ async start() {
195
+ process.on('SIGTERM', () => {
196
+ this.proc.kill("SIGTERM");
197
+ process.exit(0);
198
+ });
199
+ process.on('SIGINT', () => {
200
+ this.proc.kill("SIGINT");
201
+ process.exit(0);
202
+ });
203
+ // Spawn process.
204
+ this.scan_files();
205
+ this.has_changed = false;
206
+ this.spawn_process();
207
+ this.args.push("--file-watcher-restart");
208
+ // Start scan loop.
209
+ await this.scan();
210
+ }
211
+ // Scan.
212
+ async scan() {
213
+ this.scan_files();
214
+ let interval = this.interval;
215
+ if (this.has_changed) {
216
+ interval += 250;
217
+ await new Promise((resolve) => {
218
+ setTimeout(async () => {
219
+ this.scan_files();
220
+ this.has_changed = false;
221
+ await this.restart_process();
222
+ resolve(null);
223
+ }, 250);
224
+ });
225
+ }
226
+ setTimeout(() => this.scan(), interval);
227
+ }
228
+ // Scan files.
229
+ scan_files() {
230
+ const scan_files = (dir) => {
231
+ fs.readdirSync(dir).forEach((name) => scan_file(path.join(dir, name)));
232
+ };
233
+ const scan_file = (path) => {
234
+ if (this.excluded.includes(path)) {
235
+ return null;
236
+ }
237
+ let stat;
238
+ try {
239
+ stat = fs.statSync(path);
240
+ }
241
+ catch (e) {
242
+ delete this.mtimes[path]; // a file was deleted.
243
+ return;
244
+ }
245
+ if (this.mtimes[path] != stat.mtimeMs) {
246
+ if (this.mtimes[path] != null) {
247
+ logger.log(1, this.log_source, `Source file ${path} changed.`);
248
+ }
249
+ this.has_changed = true;
250
+ }
251
+ this.mtimes[path] = stat.mtimeMs;
252
+ if (stat.isDirectory()) {
253
+ scan_files(path);
254
+ }
255
+ };
256
+ scan_files(this.source);
257
+ this.additional_paths.forEach((path) => scan_file(path));
258
+ }
259
+ // Spawn process.
260
+ spawn_process() {
261
+ if (this._com_file === undefined) {
262
+ // @ts-ignore
263
+ this._com_file = new vlib.Path(`/tmp/${String.random(12)}`);
264
+ }
265
+ if (this.config == null && this.start_file == null) {
266
+ throw new Error("When 'Server.file_watcher.start_file' is undefined, the server must be started using `$ volt --start` in order to use the file watcher.");
267
+ }
268
+ this.proc = spawn(this.start_file ? "node" : "volt", this.start_file
269
+ ? [this.start_file, ...this.args, ...process.argv]
270
+ : ["--start", "--config", this.config || "", ...this.args, ...process.argv], {
271
+ cwd: this.source,
272
+ stdio: "inherit",
273
+ env: {
274
+ ...process.env,
275
+ "VOLT_FILE_WATCHER": "1",
276
+ "VOLT_STARTED_FILE": this._com_file.str(),
277
+ },
278
+ });
279
+ this.proc.on("exit", (code) => {
280
+ if (code === 0) {
281
+ this.scan_files(); // scan again so any subsequent file changes will be updated as well.
282
+ this.has_changed = false;
283
+ this.spawn_process();
284
+ }
285
+ else {
286
+ process.exit(code || 1);
287
+ }
288
+ });
289
+ this.proc.on("error", (e) => {
290
+ console.error(e);
291
+ process.exit(1);
292
+ });
293
+ }
294
+ // Spawn process.
295
+ async restart_process() {
296
+ logger.log(0, this.log_source, `Restarting server due to file changes.`);
297
+ this._com_file.save_sync("0");
298
+ this.has_changed = false;
299
+ this.proc.kill("SIGINT");
300
+ await new Promise((resolve) => {
301
+ const loop = () => {
302
+ if (this._com_file.load_sync() === "1") {
303
+ return resolve();
304
+ }
305
+ setTimeout(loop, 150);
306
+ };
307
+ loop();
308
+ });
309
+ }
310
+ }
311
+ // ---------------------------------------------------------
312
+ // Exports.
313
+ export { StaticFileWatcher, FileWatcher };
@@ -0,0 +1,13 @@
1
+ export declare const web_exports: {
2
+ css: string;
3
+ js: string;
4
+ };
5
+ export declare const Frontend: {
6
+ load_globals(): Promise<string[]>;
7
+ load_globals_sync(): string[];
8
+ css: {
9
+ adyen: string;
10
+ volt: string;
11
+ };
12
+ };
13
+ export default Frontend;
@@ -0,0 +1,27 @@
1
+ import { vlib } from "./vinc.js";
2
+ // Get the directory name of the current module
3
+ import { fileURLToPath } from 'url';
4
+ import { dirname } from 'path';
5
+ var __dirname = typeof __dirname !== 'undefined' ? __dirname : dirname(fileURLToPath(new URL('./package.json', import.meta.url)));
6
+ // Paths.
7
+ export const web_exports = {
8
+ css: __dirname + "/../../../frontend/vhighlight.css",
9
+ js: __dirname + "/../esm/vhighlight.web.min.js",
10
+ };
11
+ export const Frontend = {
12
+ // Load frontend globals.
13
+ async load_globals() {
14
+ const data = await (new vlib.Path(`${__dirname}/../../../frontend/exports.json`).load());
15
+ return Object.values(data).flat();
16
+ },
17
+ load_globals_sync() {
18
+ const data = new vlib.Path(`${__dirname}/../../../frontend/exports.json`).load_sync();
19
+ return Object.values(data).flat();
20
+ },
21
+ // Path to css files.
22
+ css: {
23
+ adyen: __dirname + "../../../../frontend/src/css/adyen.css",
24
+ volt: __dirname + "../../../../frontend/src/css/volt.css",
25
+ }
26
+ };
27
+ export default Frontend;
@@ -0,0 +1,24 @@
1
+ import { vlib } from "./vinc.js";
2
+ import { Endpoint } from "./endpoint.js";
3
+ import { RateLimitGroup } from "./rate_limit.js";
4
+ declare class ImageEndpoint extends Endpoint implements Endpoint {
5
+ static cache_in_memory: boolean;
6
+ static supported_images: string[];
7
+ private i_path;
8
+ private i_type;
9
+ private i_data?;
10
+ private i_cache;
11
+ is_image_endpoint: boolean;
12
+ constructor({ endpoint, path, content_type, cache, _is_static, rate_limit, }: {
13
+ endpoint: string;
14
+ path: vlib.Path;
15
+ content_type: string;
16
+ cache?: boolean | number;
17
+ _is_static?: boolean;
18
+ rate_limit?: string | RateLimitGroup;
19
+ });
20
+ transform(type?: string | null, width?: number | string | null, height?: number | string | null, aspect_ratio?: string | boolean | null): Promise<Buffer>;
21
+ get_aspect_ratio(): Promise<string | null>;
22
+ _clear_cache(): void;
23
+ }
24
+ export { ImageEndpoint };
@@ -0,0 +1,206 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+ // ---------------------------------------------------------
6
+ // Libraries.
7
+ import sharp from 'sharp';
8
+ import { Endpoint } from "./endpoint.js";
9
+ import { logger, LogSource } from "./logger.js";
10
+ const log_source = new LogSource("ImageEndpoint");
11
+ // ---------------------------------------------------------
12
+ // ImageEndpoint.
13
+ // Supports resizing and editing formats.
14
+ /* @docs:
15
+ @nav: Backend
16
+ @chapter: Endpoints
17
+ @title: Image Endpoint
18
+ @description:
19
+ All static images are served through the `ImageEndpoint`.
20
+
21
+ The image endpoint accepts three optional query parameters when retrieving the image to transform the image.
22
+ - `type` string: The input type.
23
+ - `width` number: The height of the image as a number `100` or percentage `50%` / `0.5x`. The aspect ratio will be maintained when `height` is undefined.
24
+ - `height` number: The width of the image as a number `100` or percentage `50%` / `0.5x`. The aspect ratio will be maintained when `width` is undefined.
25
+ - `aspect_ratio` boolean: Maintain the aspect ratio when only one resizing dimension has been defined.
26
+ */
27
+ class ImageEndpoint extends Endpoint {
28
+ // Cache the original and transformed image data in memory.
29
+ static cache_in_memory = false;
30
+ // Supported image extensions.
31
+ static supported_images = [
32
+ ".jpg",
33
+ ".jpeg",
34
+ ".png",
35
+ ".webp",
36
+ ".gif",
37
+ ".tif",
38
+ ".tiff",
39
+ ".svg",
40
+ ".heif",
41
+ ".avif"
42
+ ];
43
+ i_path;
44
+ i_type;
45
+ i_data;
46
+ i_cache;
47
+ is_image_endpoint;
48
+ constructor({ endpoint, path, content_type, cache = true, _is_static = true, rate_limit = undefined, }) {
49
+ // Initialize base.
50
+ super({
51
+ method: "GET",
52
+ endpoint,
53
+ content_type,
54
+ compress: false,
55
+ cache,
56
+ params: {
57
+ "type": { type: "string", default: null },
58
+ "width": { type: ["number", "string"], default: null },
59
+ "height": { type: ["number", "string"], default: null },
60
+ "aspect_ratio": { type: "string", default: null },
61
+ },
62
+ rate_limit,
63
+ _path: path.str(),
64
+ _is_static,
65
+ });
66
+ // Attributes.
67
+ this.i_path = path.abs();
68
+ this.i_type = this.i_path.extension().substr(1);
69
+ this.i_cache = new Map();
70
+ if (ImageEndpoint.cache_in_memory) {
71
+ this.i_data = this.i_path.load_sync({ type: "buffer" });
72
+ }
73
+ // Attribute for Endpoint.
74
+ this.is_image_endpoint = true;
75
+ // Assign callback.
76
+ this.callback = async (stream, params) => {
77
+ // const buff = await fs.readFile(this.i_path.str())
78
+ const buff = await this.i_path.load({ type: "buffer" });
79
+ // const buff = await sharp(this.i_path.str())
80
+ // // .png()
81
+ // .toBuffer();
82
+ // stream.set_header("Content-Length", datax.length.toString());
83
+ return stream.send({
84
+ status: 200,
85
+ data: buff,
86
+ headers: {
87
+ "Content-Length": buff.length.toString(),
88
+ }
89
+ });
90
+ // No params.
91
+ if ((params.type == null || this.i_type === params.type) &&
92
+ params.width == null &&
93
+ params.height == null) {
94
+ return stream.send({
95
+ status: 200,
96
+ data: ImageEndpoint.cache_in_memory ? this.i_data : this.i_path.load_sync({ type: "buffer" }),
97
+ });
98
+ }
99
+ // Remove type from params when same as original type.
100
+ if (this.i_type === params.type) {
101
+ params.type = null;
102
+ }
103
+ // Check cache.
104
+ let cache_id;
105
+ if (ImageEndpoint.cache_in_memory) {
106
+ cache_id = `${params.width == null ? "" : params.width}.${params.height == null ? "" : params.height}.${params.type == null ? "" : params.type}`;
107
+ if (this.i_cache.has(cache_id)) {
108
+ return stream.send({
109
+ status: 200,
110
+ data: this.i_cache.get(cache_id),
111
+ });
112
+ }
113
+ }
114
+ // Transform image.
115
+ const data = await this.transform(params.type, params.width, params.height, params.aspect_ratio);
116
+ if (ImageEndpoint.cache_in_memory && cache_id) {
117
+ this.i_cache.set(cache_id, data);
118
+ }
119
+ return stream.send({
120
+ status: 200,
121
+ data,
122
+ });
123
+ };
124
+ }
125
+ // Transform image.
126
+ async transform(type = null, width = null, height = null, aspect_ratio = true) {
127
+ const img = sharp(this.i_path.str());
128
+ let metadata;
129
+ if (width != null || height != null) {
130
+ let parsed_width;
131
+ let parsed_height;
132
+ if (typeof width === "string") {
133
+ let last_char = width.charAt(width.length - 1);
134
+ if (last_char === "%" || last_char === "x") {
135
+ if (metadata === undefined) {
136
+ metadata = await img.metadata();
137
+ }
138
+ if (last_char === "x") {
139
+ parsed_width = parseInt(String(metadata.width * parseFloat(width)));
140
+ }
141
+ else {
142
+ parsed_width = parseInt(String(metadata.width * (parseFloat(width) / 100)));
143
+ }
144
+ }
145
+ else {
146
+ parsed_width = parseInt(width);
147
+ }
148
+ }
149
+ else if (typeof width === "number") {
150
+ parsed_width = parseInt(String(width));
151
+ }
152
+ if (typeof height === "string") {
153
+ let last_char = height.charAt(height.length - 1);
154
+ if (last_char === "%" || last_char === "x") {
155
+ if (metadata === undefined) {
156
+ metadata = await img.metadata();
157
+ }
158
+ if (last_char === "x") {
159
+ parsed_height = parseInt(String(metadata.height * parseFloat(height)));
160
+ }
161
+ else {
162
+ parsed_height = parseInt(String(metadata.height * (parseFloat(height) / 100)));
163
+ }
164
+ }
165
+ else {
166
+ parsed_height = parseInt(height);
167
+ }
168
+ }
169
+ else if (typeof height === "number") {
170
+ parsed_height = parseInt(String(height));
171
+ }
172
+ const opts = {
173
+ width: parsed_width,
174
+ height: parsed_height
175
+ };
176
+ if (aspect_ratio === "false" || aspect_ratio === false) {
177
+ opts.fit = 'fill';
178
+ }
179
+ img.resize(opts);
180
+ }
181
+ if (type != null) {
182
+ img.toFormat(type);
183
+ }
184
+ return img.toBuffer();
185
+ }
186
+ // Get aspect ratio.
187
+ async get_aspect_ratio() {
188
+ try {
189
+ const metadata = await sharp(this._path).metadata();
190
+ return `${metadata.width} / ${metadata.height}`;
191
+ }
192
+ catch (err) {
193
+ logger.error(log_source, `Unable to determine the aspect ratio of image ${this._path}: `, err);
194
+ return null;
195
+ }
196
+ }
197
+ // Clear cache.
198
+ _clear_cache() {
199
+ if (ImageEndpoint.cache_in_memory) {
200
+ this.i_cache.clear();
201
+ }
202
+ }
203
+ }
204
+ // ---------------------------------------------------------
205
+ // Exports.
206
+ export { ImageEndpoint };
@@ -0,0 +1,5 @@
1
+ import { vlib } from "./vinc.js";
2
+ export declare const logger: vlib.Logger;
3
+ export declare const LogSource: typeof vlib.LogSource;
4
+ export type LogSource = vlib.LogSource;
5
+ export default logger;
@@ -0,0 +1,13 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+ // ---------------------------------------------------------
6
+ // Logger.
7
+ import { vlib } from "./vinc.js";
8
+ export const logger = new vlib.Logger({
9
+ log_level: 0,
10
+ threading: true,
11
+ });
12
+ export const LogSource = vlib.LogSource;
13
+ export default logger;
@@ -0,0 +1,50 @@
1
+ export declare class Meta {
2
+ author: string | null;
3
+ title: string | null;
4
+ description: string | null;
5
+ image: string | null;
6
+ robots: string;
7
+ charset: string;
8
+ viewport: string;
9
+ favicon: string;
10
+ constructor({ author, title, description, image, robots, charset, viewport, favicon, }?: {
11
+ author?: string | null;
12
+ title?: string | null;
13
+ description?: string | null;
14
+ image?: string | null;
15
+ robots?: string;
16
+ charset?: string;
17
+ viewport?: string;
18
+ favicon?: string;
19
+ });
20
+ copy(override?: {
21
+ author?: string | null;
22
+ title?: string | null;
23
+ description?: string | null;
24
+ image?: string | null;
25
+ robots?: string;
26
+ charset?: string;
27
+ viewport?: string;
28
+ favicon?: string;
29
+ }): Meta;
30
+ set_author(value: string | null): this;
31
+ set_title(value: string | null): this;
32
+ set_description(value: string | null): this;
33
+ set_image(value: string | null): this;
34
+ set_robots(value: string): this;
35
+ set_charset(value: string): this;
36
+ set_viewport(value: string): this;
37
+ set_favicon(value: string): this;
38
+ obj(): {
39
+ author: string | null;
40
+ title: string | null;
41
+ description: string | null;
42
+ image: string | null;
43
+ robots: string;
44
+ charset: string;
45
+ viewport: string;
46
+ favicon: string;
47
+ };
48
+ build_html(domain?: string | null): string;
49
+ }
50
+ export default Meta;