@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,954 @@
1
+ "use strict";
2
+ /*
3
+ * Author: Daan van den Bergh
4
+ * Copyright: © 2022 - 2024 Daan van den Bergh.
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.Stream = void 0;
11
+ // ---------------------------------------------------------
12
+ // Imports.
13
+ const zlib_1 = __importDefault(require("zlib"));
14
+ // ---------------------------------------------------------
15
+ // Request object.
16
+ /* @docs
17
+ @nav: Backend
18
+ @chapter: Stream
19
+ @title: HTTP1/2 Stream
20
+ @description:
21
+ The http2 stream wrapper object.
22
+ @attribute:
23
+ @name: headers
24
+ @desc: The request headers.
25
+ */
26
+ class Stream {
27
+ s;
28
+ headers;
29
+ req;
30
+ res;
31
+ http2;
32
+ http1;
33
+ _ip;
34
+ _port;
35
+ _method;
36
+ _params;
37
+ _is_query_params;
38
+ _endpoint;
39
+ _query_string;
40
+ _cookies;
41
+ _uid;
42
+ status_code;
43
+ finished;
44
+ res_cookies;
45
+ res_headers;
46
+ body;
47
+ promise;
48
+ constructor(stream, headers, req, res) {
49
+ // Parameters.
50
+ this.s = stream;
51
+ this.headers = (headers ?? {});
52
+ this.req = req;
53
+ this.res = res;
54
+ this.http2 = req == null;
55
+ this.http1 = req != null;
56
+ // HTTP1.
57
+ if (this.http1) {
58
+ this.headers = this.req.headers;
59
+ }
60
+ // Request attributes.
61
+ this._ip = this.http2 ? this.s.session.socket.remoteAddress : this.req.socket.remoteAddress;
62
+ this._port = this.http2 ? this.s.session.socket.remotePort : this.req.socket.remotePort;
63
+ this._method = this.http2 ? this.headers[':method'] : this.req.method;
64
+ this._params = undefined;
65
+ this._is_query_params = false;
66
+ this._endpoint = undefined;
67
+ this._query_string = undefined;
68
+ this._cookies = undefined;
69
+ this._uid = null;
70
+ // Response attributes
71
+ this.status_code = null;
72
+ this.finished = false;
73
+ this.res_cookies = [];
74
+ this.res_headers = this.http1 ? [] : {};
75
+ // Read body.
76
+ this.body = "";
77
+ this.promise = undefined;
78
+ this._recv_body();
79
+ }
80
+ // Receve the body.
81
+ _recv_body() {
82
+ this.promise = new Promise((resolve, reject) => {
83
+ // Buffers.
84
+ const buffs = [];
85
+ // Get decompress stream.
86
+ let decompress_stream;
87
+ const content_encoding = this.headers['content-encoding'];
88
+ if (content_encoding === 'gzip') {
89
+ decompress_stream = zlib_1.default.createGunzip();
90
+ }
91
+ else if (content_encoding === 'deflate') {
92
+ decompress_stream = zlib_1.default.createInflate();
93
+ }
94
+ const cleanup = () => {
95
+ if (decompress_stream) {
96
+ decompress_stream.close();
97
+ }
98
+ };
99
+ // HTTP2.
100
+ if (this.http2) {
101
+ let stream = this.s;
102
+ // If decompression is needed, pipe the stream through the decompression stream
103
+ if (decompress_stream) {
104
+ stream = this.s.pipe(decompress_stream);
105
+ // decompress_stream.on('error', (e) => { cleanup(); reject(e); });
106
+ }
107
+ // On error.
108
+ stream.on('error', (e) => { cleanup(); reject(e); });
109
+ // Receive data.
110
+ stream.on('data', (chunk) => {
111
+ buffs.push(chunk);
112
+ });
113
+ stream.on('end', () => {
114
+ this.body = Buffer.concat(buffs).toString();
115
+ cleanup();
116
+ resolve();
117
+ });
118
+ }
119
+ // HTTP1.
120
+ else {
121
+ let stream = this.req;
122
+ // Decompress data.
123
+ if (decompress_stream) {
124
+ this.req.pipe(decompress_stream);
125
+ stream = decompress_stream;
126
+ }
127
+ // On error.
128
+ stream.on('error', (e) => { cleanup(); reject(e); });
129
+ // Receive data.
130
+ stream.on("data", (data) => {
131
+ buffs.push(data);
132
+ });
133
+ stream.on("end", () => {
134
+ this.body = Buffer.concat(buffs).toString();
135
+ cleanup();
136
+ resolve();
137
+ });
138
+ }
139
+ });
140
+ }
141
+ // Parse endpoint.
142
+ _parse_endoint() {
143
+ if (this._endpoint !== undefined) {
144
+ return;
145
+ }
146
+ this._endpoint = this.http2 ? this.headers[":path"] : this.req.url;
147
+ let index;
148
+ if ((index = this._endpoint.indexOf("?")) !== -1) {
149
+ this._query_string = this._endpoint.substr(index + 1);
150
+ this._endpoint = this._endpoint.substr(0, index);
151
+ }
152
+ this._endpoint = this._endpoint.replace(/\/\//g, "/");
153
+ if (this._endpoint.length > 1 && this._endpoint.charAt(this._endpoint.length - 1) === "/") {
154
+ this._endpoint = this._endpoint.substr(0, this._endpoint.length - 1);
155
+ }
156
+ }
157
+ // Parse the parameters.
158
+ _parse_params() {
159
+ // Parse query string.
160
+ this._parse_endoint();
161
+ // Already parsed.
162
+ if (this._params !== undefined) {
163
+ return;
164
+ }
165
+ // Initialize.
166
+ this._params = {};
167
+ // By query string.
168
+ if (this._query_string !== undefined) {
169
+ // As encoded json.
170
+ if (this._query_string.charAt(0) === "{") {
171
+ try {
172
+ this._params = JSON.parse(decodeURIComponent(this._query_string));
173
+ }
174
+ catch (err) {
175
+ throw Error(`Invalid json request query: ${err}.`);
176
+ }
177
+ }
178
+ // As query string.
179
+ else {
180
+ // Assign.
181
+ this._is_query_params = true;
182
+ // Variables.
183
+ let is_key = true, key = "", value = "";
184
+ const number_regex = /^-?\d+(\.\d+)?$/;
185
+ // Callback.
186
+ const add_value = () => {
187
+ let output_value;
188
+ switch (value) {
189
+ case "true":
190
+ case "True":
191
+ output_value = true;
192
+ break;
193
+ case "false":
194
+ case "False":
195
+ output_value = false;
196
+ break;
197
+ case "null":
198
+ case "None":
199
+ case "undefined":
200
+ output_value = null;
201
+ break;
202
+ default:
203
+ output_value = decodeURIComponent(value.replaceAll("+", " "));
204
+ if (number_regex.test(output_value)) {
205
+ if (output_value.indexOf(".") !== -1) {
206
+ output_value = parseFloat(output_value);
207
+ }
208
+ else {
209
+ output_value = parseInt(output_value);
210
+ }
211
+ }
212
+ break;
213
+ }
214
+ this._params[decodeURIComponent(key.replaceAll("+", " "))] = output_value;
215
+ key = "";
216
+ value = "";
217
+ is_key = true;
218
+ };
219
+ // Iterate
220
+ for (let i = 0; i < this._query_string.length; i++) {
221
+ const c = this._query_string.charAt(i);
222
+ if (is_key && c === "=") {
223
+ is_key = false;
224
+ continue;
225
+ }
226
+ else if (is_key === false && c === "&") {
227
+ add_value();
228
+ continue;
229
+ }
230
+ if (is_key) {
231
+ key += c;
232
+ }
233
+ else {
234
+ value += c;
235
+ }
236
+ }
237
+ if (key.length > 0) {
238
+ add_value();
239
+ }
240
+ }
241
+ }
242
+ // By body.
243
+ else if (this.body.trim().charAt(0) === "{") {
244
+ try {
245
+ this._params = JSON.parse(this.body);
246
+ }
247
+ catch (err) {
248
+ throw Error(`Invalid json request body: ${err}.`);
249
+ }
250
+ }
251
+ // Handler.
252
+ return this._params;
253
+ }
254
+ // Parse cookies.
255
+ _parse_cookies() {
256
+ // Reset cookies.
257
+ this._cookies = {};
258
+ // Vars.
259
+ const cookie_str = this.http2 ? this.headers["cookie"] : this.req.headers.cookie;
260
+ if (cookie_str === undefined) {
261
+ return null;
262
+ }
263
+ let key = "";
264
+ let value = "";
265
+ let cookie = {};
266
+ let cookie_length = 0;
267
+ let cookie_key = null;
268
+ let is_value = false;
269
+ let is_str = null;
270
+ // Append to cookie.
271
+ const append_to_cookie = () => {
272
+ if (key.length > 0) {
273
+ if (cookie_length === 0) {
274
+ cookie.value = value;
275
+ }
276
+ else {
277
+ cookie[key] = value;
278
+ }
279
+ ++cookie_length;
280
+ }
281
+ key = "";
282
+ value = "";
283
+ is_value = false;
284
+ is_str = null;
285
+ };
286
+ // Append cookie.
287
+ const append_cookie = () => {
288
+ if (cookie_key != null) {
289
+ this._cookies[cookie_key] = cookie;
290
+ cookie_key = null;
291
+ cookie = {};
292
+ cookie_length = 0;
293
+ }
294
+ };
295
+ // Iterate.
296
+ for (let x = 0; x < cookie_str.length; x++) {
297
+ const c = cookie_str.charAt(x);
298
+ // Add char to value.
299
+ if (is_value) {
300
+ // End of cookie string.
301
+ if (is_str === c) {
302
+ value = value.substr(1, value.length - 1);
303
+ append_to_cookie();
304
+ }
305
+ // Cookie seperator.
306
+ else if (is_str == null && c === " ") {
307
+ append_to_cookie();
308
+ }
309
+ // End of cookie.
310
+ else if (is_str == null && c === ";") {
311
+ append_to_cookie();
312
+ append_cookie();
313
+ }
314
+ // Append to value.
315
+ else {
316
+ value += c;
317
+ if (value.length === 1 && (c === "\"" || c === "'")) {
318
+ is_str = c;
319
+ }
320
+ }
321
+ }
322
+ // Skip whitespace in keys.
323
+ else if (c == " " || c == "\t") {
324
+ continue;
325
+ }
326
+ // End of cookie key.
327
+ else if (c == "=") {
328
+ if (cookie_key == null) {
329
+ cookie_key = key;
330
+ }
331
+ is_value = true;
332
+ }
333
+ // Add char to key.
334
+ else {
335
+ key += c;
336
+ }
337
+ }
338
+ append_to_cookie();
339
+ append_cookie();
340
+ }
341
+ // ---------------------------------------------------------
342
+ // Functions.
343
+ // Wait till the request body is fully received.
344
+ async join() {
345
+ await this.promise;
346
+ }
347
+ // Get the requests ip.
348
+ /* @docs:
349
+ * @title: IP
350
+ * @description: Get the request's ip.
351
+ * @property: true
352
+ * @usage:
353
+ * ...
354
+ * const ip = stream.ip;
355
+ */
356
+ get ip() {
357
+ return this._ip;
358
+ }
359
+ // Get the requests port.
360
+ /* @docs:
361
+ * @title: Port
362
+ * @description: Get the request's port.
363
+ * @property: true
364
+ * @usage:
365
+ * ...
366
+ * const port = stream.port;
367
+ */
368
+ get port() {
369
+ return this._port;
370
+ }
371
+ // Get the method.
372
+ /* @docs:
373
+ * @title: Method
374
+ * @description: Get the request method.
375
+ * @property: true
376
+ * @usage:
377
+ * ...
378
+ * const method = stream.method;
379
+ */
380
+ get method() {
381
+ return this._method;
382
+ }
383
+ // Get the endpoint.
384
+ /* @docs:
385
+ * @title: Endpoint
386
+ * @description: Get the request's endpoint. This will not include the query string.
387
+ * @property: true
388
+ * @type: string
389
+ * @usage:
390
+ * ...
391
+ * const endpoint = stream.endpoint;
392
+ */
393
+ get endpoint() {
394
+ if (this._endpoint !== undefined) {
395
+ return this._endpoint;
396
+ }
397
+ this._parse_endoint();
398
+ return this._endpoint;
399
+ }
400
+ // Get the params.
401
+ /* @docs:
402
+ * @title: Parameters
403
+ * @description: Get the request's query or body params.
404
+ * property: true
405
+ * @type: object
406
+ * @usage:
407
+ * ...
408
+ * const params = stream.params;
409
+ */
410
+ get params() {
411
+ if (this._params !== undefined) {
412
+ return this._params;
413
+ }
414
+ this._parse_params();
415
+ return this._params;
416
+ }
417
+ // Get a param by name and optionally by type.
418
+ /* @docs:
419
+ * @title: Parameter
420
+ * @description: Get a single query or body parameter with an optional type cast.
421
+ * @warning: Throws an error when the parameter does not exist or when the type is different from the specified type(s), unless parameter `def` is defined.
422
+ * @param:
423
+ * @name: name
424
+ * @desc: The name of the parameter.
425
+ * @type: string
426
+ * @param:
427
+ * @name: type
428
+ * @desc: The type cast of the parameters, valid types are `[null, "boolean", "number", "string", "array", "object"]`.
429
+ * @type: string
430
+ * @param:
431
+ * @name: def
432
+ * @desc:
433
+ * The default value to return when the parameter does not exist.
434
+ *
435
+ * If the parameter is not defined and `def` is `undefined` then this function will throw an error.
436
+ * When `def` is `undefined` errors will be thrown, when `def` is `null` and the parameter is undefined then `null` will be returned as the default value.
437
+ *
438
+ * Errors will always be thrown when the incorrect type has been sent by the user.
439
+ * @type: any
440
+ * @usage:
441
+ * ...
442
+ * const param = stream.param("myparameter", "number", 10);
443
+ */
444
+ param(name, type = null, def = undefined) {
445
+ // Parse params.
446
+ this._parse_params();
447
+ // Get value.
448
+ let value = this._params[name];
449
+ // Check type.
450
+ if (type != null) {
451
+ // Vars.
452
+ let is_type_array = Array.isArray(type);
453
+ // Wrapper funcs.
454
+ const type_str = () => {
455
+ let str = "";
456
+ if (type != null) {
457
+ str += " type ";
458
+ if (is_type_array) {
459
+ let i = 0, one_but_last_i = type.length - 2;
460
+ type.forEach((item, i) => {
461
+ str += `"${item}"`;
462
+ if (i < one_but_last_i) {
463
+ str += ", ";
464
+ }
465
+ else if (i === one_but_last_i) {
466
+ str += " or ";
467
+ }
468
+ });
469
+ }
470
+ else {
471
+ str += `"${type}"`;
472
+ }
473
+ }
474
+ return str;
475
+ };
476
+ const type_eq_or_includes = (match) => {
477
+ if (is_type_array) {
478
+ return type.includes(match);
479
+ }
480
+ return match === type;
481
+ };
482
+ // Check undefined.
483
+ if (value == null || value === "") {
484
+ if (def !== undefined) {
485
+ return def;
486
+ }
487
+ throw Error(`Define parameter "${name}"${type_str()}.`);
488
+ }
489
+ // Cast the value to another type when a query string was used.
490
+ if (this._is_query_params && type_eq_or_includes("string") === false) {
491
+ if (is_type_array === false) {
492
+ type = [type];
493
+ }
494
+ const success = type.some((type) => {
495
+ // Convert to string.
496
+ if (type === "string") {
497
+ return true;
498
+ }
499
+ // Convert to null.
500
+ if (type === "null" && value === "null") {
501
+ value = null;
502
+ return true;
503
+ }
504
+ // Convert to boolean.
505
+ const is_boolean = type === "boolean";
506
+ if (is_boolean && value === "true") {
507
+ value = true;
508
+ return true;
509
+ }
510
+ if (is_boolean && value === "false") {
511
+ value = false;
512
+ return true;
513
+ }
514
+ // Convert to array.
515
+ if (type === "array") {
516
+ value = value.split(",");
517
+ return true;
518
+ }
519
+ // Convert to object.
520
+ if (type === "object") {
521
+ const split = value.split(",");
522
+ value = {};
523
+ split.forEach((item) => {
524
+ const pair = item.split(":");
525
+ value[pair[0]] = pair[1];
526
+ });
527
+ return true;
528
+ }
529
+ // Convert to numeric.
530
+ if (type === "number" && /^-?\d+(\.\d+)?$/.test(value)) {
531
+ value = parseFloat(value);
532
+ return true;
533
+ }
534
+ });
535
+ if (!success) {
536
+ throw Error(`Parameter "${name}" should be of${type_str()}.`);
537
+ }
538
+ }
539
+ // Check the type when no query params are defined since JSON.parse already parsed the types.
540
+ else if (!this._is_query_params) {
541
+ const value_type = typeof value;
542
+ if (!is_type_array) {
543
+ type = [type];
544
+ }
545
+ const success = type.some((type) => {
546
+ const l_is_array = type === "array";
547
+ const l_is_null = type === "null";
548
+ // Same type.
549
+ if (!l_is_array && !l_is_null && type === value_type) {
550
+ return true;
551
+ }
552
+ // Check to null.
553
+ if (l_is_null && value == null) {
554
+ return true;
555
+ }
556
+ // Convert to array.
557
+ if (l_is_array && Array.isArray(value)) {
558
+ return true;
559
+ }
560
+ });
561
+ if (!success) {
562
+ throw Error(`Parameter "${name}" should be of${type_str()}.`);
563
+ }
564
+ }
565
+ }
566
+ // Check undefined.
567
+ else if (value == null || value === "") {
568
+ if (def !== undefined) {
569
+ return def;
570
+ }
571
+ throw Error(`Define parameter "${name}".`);
572
+ }
573
+ // Return value.
574
+ return value;
575
+ }
576
+ // Get the request cookies.
577
+ /* @docs:
578
+ * @title: Cookies
579
+ * @description: Get the request's cookies
580
+ * property: true
581
+ * @type: object
582
+ * @usage:
583
+ * ...
584
+ * const cookies = stream.cookies;
585
+ */
586
+ get cookies() {
587
+ if (this._cookies !== undefined) {
588
+ return this._cookies;
589
+ }
590
+ this._parse_cookies();
591
+ return this._cookies;
592
+ }
593
+ // Check if the stream is closed
594
+ /* @docs:
595
+ * @title: Closed
596
+ * @description: Check if the stream is closed.
597
+ * @property: true
598
+ * @usage:
599
+ * ...
600
+ * const ip = stream.closed;
601
+ */
602
+ get closed() {
603
+ if (!this.http2) {
604
+ throw new Error("This function is only supported for http2 streams.");
605
+ }
606
+ return this.s.closed;
607
+ }
608
+ // Check if the stream is destroyed
609
+ /* @docs:
610
+ * @title: Destroyed
611
+ * @description: Check if the stream is destroyed.
612
+ * @property: true
613
+ * @usage:
614
+ * ...
615
+ * const ip = stream.destroyed;
616
+ */
617
+ get destroyed() {
618
+ if (this.http2) {
619
+ return this.s.destroyed;
620
+ }
621
+ else {
622
+ return this.req.destroyed;
623
+ }
624
+ }
625
+ // ---------------------------------------------------------
626
+ // Functions.
627
+ // Get the authenticated uid.
628
+ /* @docs:
629
+ * @title: UID
630
+ * @description: Get the authenticated uid, is `null` when the request was not authenticated.
631
+ * @property: true
632
+ * @type: string
633
+ * @usage:
634
+ * ...
635
+ * const uid = stream.uid;
636
+ */
637
+ get uid() {
638
+ return this._uid;
639
+ }
640
+ set uid(value) {
641
+ this._uid = value;
642
+ }
643
+ // Send a response.
644
+ /* @docs:
645
+ * @title: Send
646
+ * @description: Send a response
647
+ * @parameter:
648
+ * @name: status
649
+ * @description: The response status.
650
+ * @type: number
651
+ * @parameter:
652
+ * @name: headers
653
+ * @description: The response headers.
654
+ * @type: object
655
+ * @parameter:
656
+ * @name: body
657
+ * @description: The response body.
658
+ * @type: any
659
+ * @parameter:
660
+ * @name: data
661
+ * @description: The response data.
662
+ * @type: undefined, string
663
+ * @deprecated: true
664
+ * @parameter:
665
+ * @name: compress
666
+ * @description: A boolean indicating if the response data should be compressed.
667
+ * @type: boolean
668
+ * @usage:
669
+ * ...
670
+ * stream.send({status: 200, data: "Hello World!"});
671
+ */
672
+ send({ status = 200, headers = {}, body = null, data = null, compress = false } = {}) {
673
+ // Copy body.
674
+ if (data != null) {
675
+ body = data;
676
+ }
677
+ // Assign sent status code.
678
+ this.status_code = status;
679
+ // HTTP2.
680
+ if (this.http2) {
681
+ const stream = this.s;
682
+ // Headers.
683
+ this.res_headers[":status"] = status;
684
+ this.set_headers(headers);
685
+ if (this.res_cookies.length > 0) {
686
+ this.res_headers["set-cookie"] = this.res_cookies;
687
+ }
688
+ if (compress) {
689
+ this.res_headers["Content-Encoding"] = "gzip";
690
+ this.res_headers["Vary"] = "Accept-Encoding";
691
+ }
692
+ // Is json.
693
+ if (body != null && typeof body === 'object' && Buffer.isBuffer(body) === false && (body instanceof Uint8Array) === false) {
694
+ this.res_headers["Content-Type"] = "application/json";
695
+ body = JSON.stringify(body);
696
+ }
697
+ // Respond.
698
+ stream.respond(this.res_headers);
699
+ // Compress.
700
+ if (compress) {
701
+ body = zlib_1.default.gzipSync(body, { level: zlib_1.default.constants.Z_BEST_COMPRESSION });
702
+ }
703
+ // End.
704
+ if (body != null) {
705
+ stream.end(Buffer.from(body));
706
+ // stream.end(body); // do not use toString() here or it will cause issues with writing binary data.
707
+ }
708
+ else {
709
+ stream.end();
710
+ }
711
+ }
712
+ // HTTP1.
713
+ else {
714
+ const req = this.req;
715
+ const res = this.res;
716
+ // Set status code.
717
+ res.statusCode = status;
718
+ // Set headers.
719
+ for (let i = 0; i < this.res_headers.length; i++) {
720
+ res.setHeader(this.res_headers[i][0], this.res_headers[i][1]);
721
+ }
722
+ Object.keys(headers).forEach((key) => {
723
+ res.setHeader(key, headers[key]);
724
+ });
725
+ // Set cookies.
726
+ if (this.cookies.length > 0) {
727
+ res.setHeader('Set-Cookie', this.res_cookies);
728
+ }
729
+ // Convert data.
730
+ if (body != null && typeof body === 'object' && Buffer.isBuffer(body) === false && (body instanceof Uint8Array) === false) {
731
+ res.setHeader("Content-Type", "application/json");
732
+ body = JSON.stringify(body);
733
+ }
734
+ // @todo compress.
735
+ if (compress) {
736
+ res.setHeader("Content-Encoding", "gzip");
737
+ res.setHeader("Vary", "Accept-Encoding");
738
+ body = zlib_1.default.gzipSync(body, { level: zlib_1.default.constants.Z_BEST_COMPRESSION });
739
+ }
740
+ // Set data.
741
+ if (body != null) {
742
+ res.end(body); // do not use toString() here or it will cause issues with writing binary data.
743
+ }
744
+ // End.
745
+ else {
746
+ res.end();
747
+ }
748
+ }
749
+ // Set as finished.
750
+ this.finished = true;
751
+ return this;
752
+ }
753
+ // Send a successs response.
754
+ /* @docs:
755
+ * @title: Send Successs
756
+ * @description: Send a response
757
+ * @parameter:
758
+ * @name: status
759
+ * @description: The response status.
760
+ * @type: number
761
+ * @parameter:
762
+ * @name: headers
763
+ * @description: The response headers.
764
+ * @type: object
765
+ * @parameter:
766
+ * @name: body
767
+ * @description: The response data.
768
+ * @type: any
769
+ * @parameter:
770
+ * @name: data
771
+ * @description: The response data.
772
+ * @type: undefined, string
773
+ * @deprecated: true
774
+ * @parameter:
775
+ * @name: compress
776
+ * @description: A boolean indicating if the response data should be compressed.
777
+ * @type: boolean
778
+ * @usage:
779
+ * ...
780
+ * stream.success({data: "Hello World!"});
781
+ */
782
+ success({ status = 200, headers = {}, body = null, data = null, compress = false } = {}) {
783
+ return this.send({ status: status, headers: headers, body: body ?? data, compress: compress });
784
+ }
785
+ // Send an error response.
786
+ /* @docs:
787
+ * @title: Send Error
788
+ * @description: Send an error response
789
+ * @parameter:
790
+ * @name: status
791
+ * @description: The response status.
792
+ * @type: number
793
+ * @parameter:
794
+ * @name: headers
795
+ * @description: The response headers.
796
+ * @type: object
797
+ * @parameter:
798
+ * @name: body
799
+ * @description: The response data.
800
+ * @type: any
801
+ * @parameter:
802
+ * @name: data
803
+ * @description: The response data.
804
+ * @type: undefined, string
805
+ * @deprecated: true
806
+ * @parameter:
807
+ * @name: compress
808
+ * @description: A boolean indicating if the response data should be compressed.
809
+ * @type: boolean
810
+ * @usage:
811
+ * ...
812
+ * stream.error({data: "Some error occured"});
813
+ */
814
+ error({ status = 500, headers = {}, body = null, data = null, compress = false } = {}) {
815
+ return this.send({ status: status, headers: headers, body: body ?? data, compress: compress });
816
+ }
817
+ // Set headers.
818
+ /* @docs:
819
+ * @title: Set header
820
+ * @description: Add a new header to the response data.
821
+ * @parameter:
822
+ * @name: name
823
+ * @description: The header name.
824
+ * @type: string
825
+ * @parameter:
826
+ * @name: value
827
+ * @description: The header value.
828
+ * @type: string
829
+ * @usage:
830
+ * ...
831
+ * stream.set_header("Connection", "close");
832
+ */
833
+ set_header(name, value) {
834
+ if (this.http2) {
835
+ this.res_headers[name] = value;
836
+ }
837
+ else {
838
+ this.res_headers.append([name, value]);
839
+ }
840
+ return this;
841
+ }
842
+ // Set headers.
843
+ /* @docs:
844
+ * @title: Set headers
845
+ * @description: Add new headers to the response data.
846
+ * @parameter:
847
+ * @name: headers
848
+ * @description: The new response headers.
849
+ * @type: object
850
+ * @usage:
851
+ * ...
852
+ * stream.set_headers({"Connection": "close"});
853
+ */
854
+ set_headers(headers = {}) {
855
+ if (headers == null) {
856
+ return this;
857
+ }
858
+ if (this.http2) {
859
+ Object.keys(headers).forEach((key) => {
860
+ this.res_headers[key] = headers[key];
861
+ });
862
+ }
863
+ else {
864
+ Object.keys(headers).forEach((key) => {
865
+ this.res_headers.append([key, headers[key]]);
866
+ });
867
+ }
868
+ return this;
869
+ }
870
+ // Remove header.
871
+ /* @docs:
872
+ * @title: Remove headers
873
+ * @description: Remove header names from the response data.
874
+ * @parameter:
875
+ * @name: ...names
876
+ * @description: The header names to remove.
877
+ * @type: ...string
878
+ * @usage:
879
+ * ...
880
+ * stream.remove_header("Connection", "User-Agent");
881
+ * @funcs: 2
882
+ */
883
+ remove_header(...names) {
884
+ if (this.http1) {
885
+ const headers = [];
886
+ for (let i = 0; i < this.res_headers.length; i++) {
887
+ if (!names.includes(this.res_headers[i][0])) {
888
+ headers.push(this.res_headers[i]);
889
+ }
890
+ }
891
+ this.res_headers = headers;
892
+ }
893
+ else {
894
+ for (let i = 0; i < names.length; i++) {
895
+ delete this.res_headers[names[i]];
896
+ }
897
+ }
898
+ return this;
899
+ }
900
+ remove_headers(...names) {
901
+ return this.remove_header(...names);
902
+ }
903
+ // Set a cookie.
904
+ /* @docs:
905
+ * @title: Set cookie.
906
+ * @description: Set a cookie that will be sent with the response.
907
+ * @warning: Will only be added to the response when the user uses `send()`, `success()` or `error()`.
908
+ * @parameter:
909
+ * @name: cookie
910
+ * @description: The cookie string.
911
+ * @type: string
912
+ * @usage:
913
+ * ...
914
+ * stream.set_cookie("MyCookie=Hello World;");
915
+ */
916
+ set_cookie(cookie) {
917
+ cookie = cookie.trim();
918
+ const name_end = cookie.indexOf("=");
919
+ if (name_end !== -1) {
920
+ const name = cookie.substr(0, name_end);
921
+ for (let i = 0; i < this.res_cookies.length; i++) {
922
+ if (this.res_cookies[i].eq_first(name)) {
923
+ this.res_cookies[i] = cookie;
924
+ return this;
925
+ }
926
+ }
927
+ }
928
+ this.res_cookies.push(cookie);
929
+ return this;
930
+ }
931
+ // Set cookies.
932
+ /* @docs:
933
+ * @title: Set Cookies
934
+ * @description: Set a cookie that will be sent with the response.
935
+ * @warning: Will only be added to the response when the user uses `send()`, `success()` or `error()`.
936
+ * @parameter:
937
+ * @name: cookies
938
+ * @description: The cookie strings.
939
+ * @type: ...string
940
+ * @usage:
941
+ * ...
942
+ * stream.set_cookies("MyCookie1=Hello World;", "MyCookie2=Hello Universe;");
943
+ */
944
+ set_cookies(...cookies) {
945
+ for (let i = 0; i < cookies.length; i++) {
946
+ this.set_cookie(cookies[i]);
947
+ }
948
+ return this;
949
+ }
950
+ }
951
+ exports.Stream = Stream;
952
+ // ---------------------------------------------------------
953
+ // Exports.
954
+ exports.default = Stream;