@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,655 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+
6
+ import { fileURLToPath } from 'url';
7
+ import { dirname, join } from 'path';
8
+ // @ts-ignore
9
+ declare var __dirname: string; if (typeof __dirname === 'undefined') var __dirname = dirname(fileURLToPath(new URL('./package.json', import.meta.url)));
10
+ // @ts-ignore
11
+ declare var __filename: string; if (typeof __filename === 'undefined') var __filename = fileURLToPath(import.meta.url);
12
+
13
+ // ---------------------------------------------------------
14
+ // Libraries.
15
+
16
+ // const Terser = require("terser");
17
+ // const esbuild = require('esbuild');
18
+
19
+ // ---------------------------------------------------------
20
+ // Imports.
21
+
22
+ import { vlib } from "@vinc";
23
+ import { vhighlight } from "@vinc";
24
+ import utils from "./utils.js";
25
+ import Meta from "./meta.js";
26
+ import TSCompiler from "./plugins/ts/compiler.js";
27
+ import logger from "./logger.js";
28
+ import { CSS } from "./plugins/css.js";
29
+
30
+ const log_source = logger.LogSource("View");
31
+
32
+ // ---------------------------------------------------------
33
+ // View.
34
+ // @todo add template vars for callback and css and js include files.
35
+ /* @docs:
36
+ * @nav: Backend
37
+ * @chapter: Endpoints
38
+ * @title: View
39
+ * @description: The `View` class can be utilized from within the `Endpoint` parameter `view`.
40
+ * @parameter:
41
+ * @name: source
42
+ * @description: The file path to the client side javascript source code.
43
+ * @type: string
44
+ * @parameter:
45
+ * @name: callback
46
+ * @description: The client side callback function, this function will be executed at the client side. For this feature the `Content-Security-Policy:script-src` must be updated with for example `unsafe-inline`.
47
+ * @type: function
48
+ * @parameter:
49
+ * @name: includes
50
+ * @description:
51
+ * The included static js files.
52
+ *
53
+ * By default the local includes will be embedded into the html page. However, this behaviour can be disabled by passing an include object with attribute `embed = false`.
54
+ * @type: array[string], array[InluceObject]
55
+ * @attributes_type: IncludeObject
56
+ * @attribute:
57
+ * @name: src
58
+ * @description: The source url of the script to include.
59
+ * @type: string
60
+ * @required: true
61
+ * @attribute:
62
+ * @name: embed
63
+ * @description: This attribute can be defined with the value of `false` to disable embedding the endpoint's content into the html page.
64
+ * @type: boolean
65
+ * @required: false
66
+ * @def: true
67
+ * @attribute:
68
+ * @name: **
69
+ * @description: Any other attributes will be assiged to the `<script>` line.
70
+ * @parameter:
71
+ * @name: links
72
+ * @description:
73
+ * The included static css files.
74
+ *
75
+ * By default the local scripts will be embedded into the html page. However, this behaviour can be disabled by passing a link object with attribute `embed = false`.
76
+ * @type: array[string], array[LinkObject]
77
+ * @attributes_type: LinkObject
78
+ * @attribute:
79
+ * @name: href
80
+ * @description: The source url of the link to include.
81
+ * @type: string
82
+ * @required: true
83
+ * @attribute:
84
+ * @name: rel
85
+ * @description: The source url of the link to include.
86
+ * @type: string
87
+ * @required: false
88
+ * @def: stylesheet
89
+ * @attribute:
90
+ * @name: embed
91
+ * @description: This attribute can be defined with the value of `false` to disable embedding the endpoint's content into the html page.
92
+ * @type: boolean
93
+ * @required: false
94
+ * @def: true
95
+ * @attribute:
96
+ * @name: **
97
+ * @description: Any other attributes will be assiged to the `<script>` line.
98
+ * @parameter:
99
+ * @name: templates
100
+ * @description:
101
+ * Templates that will be replace the `callback` code. Templates can be created using the `$TEMPLATE` template style.
102
+ * @warning: Templates will only be used on the code of the `callback` attribute.
103
+ * @parameter:
104
+ * @name: meta
105
+ * @description: The meta information object.
106
+ * @type: Meta
107
+ * @parameter:
108
+ * @name: jquery
109
+ * @description: Include jqeury by default.
110
+ * @type: boolean
111
+ * @parameter:
112
+ * @name: body_style
113
+ * @description: The style of the \<body> element. When left undefined, the static attribute `View.body_style` will be used.
114
+ * @type: null, string
115
+ * @parameter:
116
+ * @name: splash_screen
117
+ * @description: The splash screen settings. When left undefined, the static attribute `View.splash_screen` will be used.
118
+ * @type: null, SplashScreen
119
+ * @parameter:
120
+ * @name: tree_shaking
121
+ * @description: Optimize javascript source code by removing dead code.
122
+ * @type: boolean
123
+ * @parameter:
124
+ * @name: mangle
125
+ * @description: Optimize javascript source code by mangling function names.
126
+ * @type: boolean
127
+ * @parameter:
128
+ * @name: _src
129
+ * @ignore: true
130
+ *
131
+ * @attribute:
132
+ * @name: body_style
133
+ * @description: The style of the \<body> element. This static attribute will be used on all views when defined. However, it can be overridden for a single View by defining the parameter.
134
+ * @type: null, string
135
+ * @attribute:
136
+ * @name: splash_screen
137
+ * @description: The splash screen settings. This static attribute will be used on all views when defined. However, it can be overridden for a single View by defining the parameter.
138
+ * @type: null, SplashScreen
139
+ */
140
+ export class View {
141
+
142
+ // Global settings.
143
+ static includes: Array<string | Record<string, any>> = [];
144
+ static links: Array<string | Record<string, any>> = [];
145
+ static body_style: string | null = null; // css string style.
146
+ static splash_screen: any = null; // SplashScreen object.
147
+
148
+ // Attributes.
149
+ source: string | null;
150
+ source_path?: vlib.Path;
151
+ callback: Function | null;
152
+ includes: Array<string | Record<string, any>>;
153
+ links: Array<string | Record<string, any>>;
154
+ templates: Record<string, any>;
155
+ meta: Meta;
156
+ jquery: boolean;
157
+ lang: string;
158
+ body_style: string | null;
159
+ splash_screen: any;
160
+ tree_shaking: boolean;
161
+ mangle: boolean;
162
+ _src: string;
163
+ _embedded_sources: Array<string>;
164
+ is_js_ts_view: boolean;
165
+ html?: string | Buffer;
166
+ raw_html?: string | Buffer;
167
+ bundle: any;
168
+ payments?: string | undefined;
169
+ // vhighlight?: string | undefined;
170
+ min_device_width?: number;
171
+ _server?: any;
172
+ _endpoint?: any;
173
+
174
+ // Constructor.
175
+ constructor({
176
+ source = null,
177
+ callback = null,
178
+ includes = [],
179
+ links = [],
180
+ templates = {},
181
+ meta = new Meta(),
182
+ jquery = false,
183
+ lang = "en",
184
+ body_style = null,
185
+ splash_screen = null,
186
+ tree_shaking = false,
187
+ mangle = false,
188
+ min_device_width = 600,
189
+ _src = __filename,
190
+ }: {
191
+ source?: string | null;
192
+ callback?: Function | null;
193
+ includes?: Array<string | Record<string, any>>;
194
+ links?: Array<string | Record<string, any>>;
195
+ templates?: Record<string, any>;
196
+ meta?: Meta;
197
+ jquery?: boolean;
198
+ lang?: string;
199
+ body_style?: string | null;
200
+ splash_screen?: any;
201
+ tree_shaking?: boolean;
202
+ mangle?: boolean;
203
+ min_device_width?: number,
204
+ _src?: string;
205
+ }) {
206
+ // Arguments.
207
+ this.source = source;
208
+ this.callback = callback;
209
+ this.includes = [...View.includes, ...includes];
210
+ this.links = [...View.links, ...links];
211
+ this.templates = templates;
212
+ this.meta = meta;
213
+ this.jquery = jquery;
214
+ this.lang = lang;
215
+ this.body_style = body_style ?? View.body_style;
216
+ this.splash_screen = splash_screen ?? View.splash_screen;
217
+ this.tree_shaking = tree_shaking;
218
+ this.mangle = mangle;
219
+ this.min_device_width = min_device_width;
220
+
221
+ // System arguments.
222
+ this._src = _src;
223
+ this._embedded_sources = [];
224
+
225
+ // Clean source, required to match against endpoint's.
226
+ if (this.source != null) {
227
+ this.source_path = new vlib.Path(this.source);
228
+ if (!this.source_path.exists()) {
229
+ throw new Error(`Defined source path "${this.source}" does not exist.`);
230
+ }
231
+ this.source_path = this.source_path.abs();
232
+ this.source = this.source_path.str();
233
+ }
234
+
235
+ // Is js/ts bundle view.
236
+ this.is_js_ts_view = this.source != null && /\.(jsx?|tsx?)/.test(this.source_path!.extension());
237
+
238
+ // Check args.
239
+ if (typeof source !== "string" && typeof callback !== "function") {
240
+ throw Error("Invalid usage, define either parameter \"source\" or \"callback\".");
241
+ }
242
+
243
+ // Drop duplicate includes.
244
+ this.includes = this.includes.drop_duplicates();
245
+
246
+ // Attributes.
247
+ this.html = undefined;
248
+ this.bundle = undefined;
249
+ }
250
+
251
+ // Initialize.
252
+ _initialize(server: any, endpoint: any): void {
253
+ if (server === undefined) { throw Error("Invalid usage, define parameter \"server\"."); }
254
+ if (endpoint === undefined) { throw Error("Invalid usage, define parameter \"endpoint\"."); }
255
+ this._server = server;
256
+ this._endpoint = endpoint;
257
+ }
258
+
259
+ // Bundle the compiled typescript / javascript view.
260
+ async _bundle_ts(dist_path: string, bundle: any = null): Promise<any> {
261
+ // Server & endpoint.
262
+ if (this._server === undefined || this._endpoint === undefined) { throw Error("View has not been initialized with \"View._initialize()\" yet."); }
263
+
264
+ // Bundle.
265
+ const had_bundle = this.bundle !== undefined;
266
+ if (bundle != null) {
267
+ // also accept already bundled for server.js in case multiple endpoint paths serve the same bundle.
268
+ this.bundle = bundle;
269
+ } else {
270
+ logger.log(2, log_source, `Bundling entry path "${dist_path}".`)
271
+ this.bundle = await TSCompiler.bundle({
272
+ entry_paths: [dist_path],
273
+ minify: this._server.production,
274
+ platform: "browser",
275
+ // format: "esm",
276
+ format: "iife",
277
+ target: "es2021",
278
+ // target: "esnext",
279
+ // sourcemap: this._server.production ? false : "inline",
280
+ extract_inputs: true, // since bundle.inputs is used by server.js.
281
+ tree_shaking: true,
282
+ })
283
+ if (this.bundle.errors.length > 0) {
284
+ logger.log(0, log_source, `Encountered an error while bundling "${this.source}".`)
285
+ this.bundle.debug();
286
+ return;
287
+ }
288
+ }
289
+
290
+ // Set options based on inputs.
291
+ this.payments = this.bundle.inputs.find((path: string) => path.endsWith("/modules/paddle.js"));
292
+ // this.vhighlight = this.bundle.inputs.find((path: string) => path.endsWith("/vhighlight.js"));
293
+
294
+ // Rebuild html.
295
+ await this._build_html();
296
+ if (had_bundle) {
297
+ logger.log(0, log_source, `Refreshing endpoint ${this._endpoint.method}:${this._endpoint.endpoint}.`)
298
+ } else {
299
+ logger.log(1, log_source, `Refreshing endpoint ${this._endpoint.method}:${this._endpoint.endpoint}.`)
300
+ }
301
+
302
+ // Response.
303
+ return this.bundle;
304
+ }
305
+
306
+ // Build html.
307
+ async _build_html(): Promise<void> {
308
+ // Server & endpoint.
309
+ if (this._server === undefined || this._endpoint === undefined) { throw Error("View has not been initialized with \"View._initialize()\" yet."); }
310
+
311
+ // Vars.
312
+ const line_break = this._server.production ? "" : "\n";
313
+ const has_bundle = this.bundle != null && typeof this.bundle === "object";
314
+
315
+ // Initialize html.
316
+ this.html = "";
317
+
318
+ // Doctype.
319
+ this.html += `<!DOCTYPE html><html style='min-width:100%;min-height:100%;' lang='${this.lang}'>${line_break}`;
320
+
321
+ // Headers.
322
+ this.html += `<head>${line_break}`;
323
+
324
+ // Meta.
325
+ if (this.meta) {
326
+ this.html += this.meta.build_html(this._server.full_domain) + line_break;
327
+ }
328
+
329
+ // this.html = "Hello World!";
330
+ // return;
331
+
332
+ // ------------------------------------------------------------------------------------------
333
+ // Stylesheets & links.
334
+
335
+ // Embed stylesheet.
336
+ const embed_stylesheet = (url: string): boolean => {
337
+ let embed;
338
+ if (
339
+ url != null &&
340
+ url.charAt(0) === "/"
341
+ ) {
342
+ for (const endpoint of this._server.endpoints.values()) {
343
+ if (url === endpoint.endpoint && (endpoint.raw_data != null || endpoint.data != null)) {
344
+ embed = endpoint.raw_data || endpoint.data;
345
+ }
346
+ }
347
+ }
348
+ if (embed) {
349
+ this.html += `<style>${line_break}${embed}${line_break}</style>${line_break}`;
350
+ this._embedded_sources.push(url);
351
+ return true;
352
+ }
353
+ return false;
354
+ }
355
+
356
+ // Include a link async.
357
+ let include_links_script: string | null = null;
358
+ const include_link_async = (link: Record<string, any>): void => {
359
+ if (include_links_script == null) {
360
+ include_links_script = "async function __incl_lnk(args){var link = document.createElement('link');for (let key in args) {if (args.hasOwnProperty(key)){link.setAttribute(key,args[key])}}document.head.appendChild(link)}" + line_break;
361
+ }
362
+ if (link.rel == null) {
363
+ link.rel = "stylesheet";
364
+ }
365
+ include_links_script += `__incl_lnk(${JSON.stringify(link)});${line_break}`
366
+ }
367
+
368
+ // Stylesheets.
369
+ embed_stylesheet("/volt/volt.css")
370
+ embed_stylesheet("/vhighlight/vhighlight.css")
371
+ if (this.payments && this._server.payments) {
372
+ if (this._server.payments.type === "adyen") {
373
+ include_link_async({
374
+ rel: "stylesheet",
375
+ href: `https://checkoutshopper-${this._server.production ? "live" : "test"}.adyen.com/checkoutshopper/sdk/5.53.2/adyen.css`,
376
+ integrity: "sha384-9EdBqZRrjozkt+Be5ycjHBTi+4DYrafpC1KyPnNyTBfjBIZ5+oMp8BbgvPLGgsE0",
377
+ crossorigin: "anonymous",
378
+ })
379
+ }
380
+ }
381
+
382
+ // Add custom stylesheet for minimum device width on smaller screens.
383
+ if (this.min_device_width != null) {
384
+ this.html += `
385
+ <script>
386
+ let has_min_width = false;
387
+ const viewport = document.querySelector('meta[name="viewport"]');
388
+ function set_min_width() {
389
+ const device_width = window.innerWidth;
390
+ console.log("Device width [" + device_width + "] below min_device_width [${this.min_device_width} =", (device_width <= ${this.min_device_width}).toString() + "]");
391
+ if (device_width <= ${this.min_device_width}) {
392
+ const content = 'width=${this.min_device_width}, initial-scale=' + (device_width / ${this.min_device_width});
393
+ console.log("Below ${this.min_device_width}", {content, width: device_width, has_min_width, viewport: viewport.getAttribute('content')});
394
+ if (viewport.getAttribute('content') !== content) {
395
+ console.log('set min width viewport', device_width, device_width / ${this.min_device_width})
396
+ viewport.setAttribute('content', content);
397
+ has_min_width = true;
398
+ }
399
+ } else if (has_min_width) {
400
+ console.log('disable min width viewport', device_width)
401
+ viewport.setAttribute('content', 'width=device-width, initial-scale=1');
402
+ has_min_width = false;
403
+ }
404
+ }
405
+ let timeout_load; window.addEventListener('load', () => {clearTimeout(timeout_load); timeout_load = setTimeout(set_min_width, 25); } );
406
+ let timeout_resize; window.addEventListener('resize', () => {clearTimeout(timeout_resize); timeout_resize = setTimeout(set_min_width, 25); } );
407
+ set_min_width();
408
+ </script>
409
+ `.dedent();
410
+ }
411
+
412
+ // this.html += `<script>
413
+
414
+ // // This version prevents the infinite loop
415
+ // let resizeTimeout;
416
+ // let viewportChangeInProgress = false;
417
+ // const viewport = document.querySelector('meta[name="viewport"]');
418
+ // const originalContent = viewport.getAttribute('content');
419
+
420
+ // function set_min_width() {
421
+ // // Don't run if we're already processing a viewport change
422
+ // if (viewportChangeInProgress) return;
423
+
424
+ // // Clear any pending resize timeouts
425
+ // clearTimeout(resizeTimeout);
426
+
427
+ // // Set a small delay to prevent rapid successive calls
428
+ // resizeTimeout = setTimeout(() => {
429
+ // viewportChangeInProgress = true;
430
+
431
+ // if (window.innerWidth < 400) {
432
+ // // Only update if needed
433
+ // viewport.setAttribute('content', \`width = 400, initial - scale\${ window.innerWidth / 400 }, maximum - scale=1\`);
434
+ // } else {
435
+ // // Restore original viewport
436
+ // viewport.setAttribute('content', originalContent);
437
+ // }
438
+
439
+ // // Allow future updates after a delay
440
+ // setTimeout(() => {
441
+ // viewportChangeInProgress = false;
442
+ // }, 300);
443
+ // }, 200);
444
+ // }
445
+ // window.addEventListener('DOMContentLoaded', set_min_width);
446
+ // window.addEventListener('orientationchange', set_min_width);
447
+ // </script>`
448
+
449
+ // Custom links.
450
+ this.links.forEach((url: string | Record<string, any>) => {
451
+ if (typeof url === "string") {
452
+ this.html += `<link rel="stylesheet" href="${url}">`;
453
+ } else if (typeof url === "object") {
454
+
455
+ // Embed content.
456
+ if (
457
+ (typeof url === "object" && url.rel === "stylesheet" && url.embed !== true && typeof url.href === "string") &&
458
+ embed_stylesheet(utils.clean_endpoint(url.href) as string)
459
+ ) { /* skip */ }
460
+
461
+ // Create link.
462
+ else {
463
+ if (url.async) {
464
+ include_link_async(url);
465
+ } else {
466
+ this.html += "<link";
467
+ Object.keys(url).forEach((key) => {
468
+ if (key !== "embed") {
469
+ this.html += ` ${key}="${url[key]}"`;
470
+ }
471
+ })
472
+ this.html += ">" + line_break;
473
+ }
474
+ }
475
+ } else {
476
+ throw Error("Invalid type for a css include, the valid value types are \"string\" and \"object\".");
477
+ }
478
+ })
479
+
480
+ // Add include links script.
481
+ if (include_links_script) {
482
+ this.html += `<script>${line_break}${include_links_script}${line_break}</script>${line_break}`;
483
+ }
484
+
485
+ // End headers.
486
+ this.html += "</head>" + line_break;
487
+
488
+ // ------------------------------------------------------------------------------------------
489
+ // Body.
490
+
491
+ // Body.
492
+ this.html += "<body id='body' style='width:100vw;height:100vh;margin:0;padding:0;";
493
+ if (this.body_style != null) { this.html += this.body_style}
494
+ this.html += "'>" + line_break;
495
+
496
+ // Create splash screen.
497
+ if (this.splash_screen != null) {
498
+ this.html += this.splash_screen.html + line_break;
499
+ }
500
+
501
+ // ------------------------------------------------------------------------------------------
502
+ // Include scripts.
503
+
504
+ // Embed the data of an endpoint.
505
+ // Returns `false` when the endpoint is not found.
506
+ const embed_script = (url: string): boolean => {
507
+ let embed;
508
+ for (const endpoint of this._server.endpoints.values()) {
509
+ if (
510
+ url === endpoint.endpoint &&
511
+ (endpoint.raw_data != null || endpoint.data != null)
512
+ ) {
513
+ embed = endpoint;
514
+ }
515
+ }
516
+
517
+ // Check if the endpoint has data or raw data to embed.
518
+ if (embed && (embed.raw_data || embed.data)) {
519
+
520
+ // Dont embed code.
521
+ if (embed.content_type === "application/javascript") {
522
+ this.html += `<script>${line_break}${embed.raw_data || embed.data}${line_break}</script>${line_break}`;
523
+ } else {
524
+ this.html += `<script type='${embed.content_type}'>${line_break}${embed.raw_data || embed.data}${line_break}</script>${line_break}`;
525
+ }
526
+ this._embedded_sources.push(url);
527
+ return true;
528
+ }
529
+ return false;
530
+ }
531
+
532
+ // Include js.
533
+ let include_js_script = `async function __volt_incl_js(url, async = true) {var script=document.createElement('script');if(async){script.async = true;}script.src=url;document.head.appendChild(script);};${line_break}`
534
+
535
+ // 3rd party js includes.
536
+ if (this.jquery) {
537
+ // Keep first since it needs to be included before volt.
538
+ this.html += "<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js'></script>" + line_break;
539
+ }
540
+ if (this._server.google_tag !== undefined) {
541
+ // this.html += `<script async src="https://www.googletagmanager.com/gtag/js?id=${this._server.google_tag}" onload='volt.google._initialize()'></script>`;
542
+ include_js_script += `__volt_incl_js("https://www.googletagmanager.com/gtag/js?id=${this._server.google_tag}");${line_break}`;
543
+ }
544
+
545
+ // Primary volt includes do not add them to cached_code since they need to be included before any other includes.
546
+ // Otherwise when including several files, most of them embedded and one not, then the not embedded will not have access to volt.
547
+ // Since volt is
548
+ // embed_script("/volt/volt.js", false);
549
+
550
+ // Add volt static aspect ratios.
551
+ // @todo volt.static
552
+ this.html += `<script>${line_break}window.volt_statics_aspect_ratios = ${JSON.stringify(Object.fromEntries(this._server.statics_aspect_ratios))}${line_break}</script>${line_break}`;
553
+
554
+ // Embed other scripts.
555
+ if (this._server.payments) {
556
+ if (this._server.payments.type === "paddle") {
557
+ // embed_script("/volt/payments/paddle.js", false); // no longer required due to auto imports.
558
+ if (this.payments) {
559
+ include_js_script += `__volt_incl_js("https://cdn.paddle.com/paddle/v2/paddle.js");${line_break}`;
560
+ }
561
+ }
562
+ }
563
+
564
+ // Add the include js script.
565
+ this.html += `<script>${line_break}${include_js_script.trimEnd()}${line_break}</script>${line_break}`
566
+
567
+ // Additional js includes.
568
+ this.includes.forEach((url: string | Record<string, any>) => {
569
+ // Embed content.
570
+ if (typeof url === "string" && embed_script(url)) { /* skip. */ }
571
+
572
+ // Include.
573
+ else {
574
+ if (typeof url === "string") {
575
+ this.html += `<script src='${url}'></script>${line_break}`;
576
+ }
577
+ else if (typeof url === "object") {
578
+ this.html += "<script";
579
+ Object.keys(url).forEach((key) => {
580
+ if (key !== "embed") {
581
+ this.html += ` ${key}="${url[key]}"`;
582
+ }
583
+ })
584
+ this.html += "></script>" + line_break;
585
+ }
586
+ else {
587
+ throw Error("Invalid type for a js include, the valid value types are \"string\" and \"object\".");
588
+ }
589
+ }
590
+ })
591
+
592
+ // Add direct source code.
593
+ if (has_bundle && typeof this.bundle.code === "string") {
594
+ this.html += `<script type='module'>${line_break}${this.bundle.code}${line_break}</script>${line_break}`;
595
+ }
596
+
597
+ // Include the source.
598
+ else if (typeof this.source === "string") {
599
+ this.html += `<script>${line_break}${await new vlib.Path(this.source).load()}${line_break}</script>${line_break}`;
600
+ }
601
+
602
+ // JS code.
603
+ else if (this.callback != null) {
604
+ let code = this.callback.toString();
605
+
606
+ // @deprecated compile using vhighlight, now esbuild is used for bundling, callback is not supported yet.
607
+ // // Fill templates.
608
+ // const code_hash = this._server.hash(code);
609
+
610
+ // // Check cache.
611
+ // const { cache_path, cache_hash, cache_data } = utils.get_compiled_cache(this._server.domain, this._endpoint.method, this._endpoint.endpoint);
612
+ // if (cache_data && code_hash === cache_hash) {
613
+ // code = cache_data;
614
+ // } else {
615
+
616
+ // // Compile.
617
+ // const compiler = new vhighlight.JSCompiler({
618
+ // line_breaks: true,
619
+ // double_line_breaks: true,
620
+ // comments: false,
621
+ // white_space: false,
622
+ // })
623
+ // try {
624
+ // code = compiler.compile_code(code, this._src);
625
+ // } catch (err) {
626
+ // console.error("JS Compile error:");
627
+ // console.error(err);
628
+ // }
629
+
630
+ // // Cache for restarts.
631
+ // utils.set_compiled_cache(cache_path, code, code_hash);
632
+ // }
633
+
634
+ // Add.
635
+ this.html += `<script>${line_break}(${code})()${line_break}</script>${line_break}`
636
+ // cached_code += `;(${code})();`;
637
+ }
638
+
639
+ // Close body.
640
+ this.html += "</body>" + line_break;
641
+
642
+ // End.
643
+ this.html += "</html>" + line_break;
644
+ }
645
+
646
+ // Serve a client.
647
+ _serve(stream: any, status_code: number = 200): void {
648
+ stream.send({
649
+ status: status_code,
650
+ headers: { "Content-Type": "text/html" },
651
+ data: this.html,
652
+ });
653
+ }
654
+ }
655
+ export default View;
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+ export * as vlib from "../../../vlib/js/dist/esm/vlib.js"
6
+ export * as vhighlight from "../../../vhighlight/dist/esm/vhighlight.js"
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
4
+ */
5
+ export * as vlib from "@vandenberghinc/vlib"
6
+ export * as vhighlight from "@vandenberghinc/vhighlight"