@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,812 @@
1
+ /*
2
+ * Author: Daan van den Bergh
3
+ * Copyright: © 2024 - 2024 Daan van den Bergh.
4
+ */
5
+
6
+ import * as pathlib from 'path';
7
+ import * as fs from 'fs';
8
+ import * as ts from 'typescript';
9
+
10
+ import { vlib } from "@vinc";
11
+ import { vhighlight } from "@vinc";
12
+ import { Utils } from "../../utils.js"
13
+
14
+ import { fileURLToPath } from 'url';
15
+ import { dirname, join } from 'path';
16
+ // @ts-ignore
17
+ declare var __dirname; var __dirname = typeof __dirname !== 'undefined' ? __dirname : dirname(fileURLToPath(new URL('./package.json', import.meta.url)));
18
+
19
+ export * as Preprocessing from "./preprocessing.js"
20
+
21
+ // Macro interface.
22
+ interface Macro {
23
+ name: string,
24
+ value: string,
25
+ args: string[],
26
+ }
27
+
28
+ // ------------------------------------------------------------------------------------------
29
+
30
+ interface PluginOptions {}
31
+ type PluginCallback = (data: string, options: PluginOptions) => undefined | string;
32
+
33
+ /*
34
+ * Preprocesses the input text, replacing non-string numeric literals
35
+ * suffixed with units and hex color codes with string literals.
36
+ */
37
+ export function preprocess(path: string, input: string, opts: {macros?: boolean, templates?: Record<string, any>} = {}) {
38
+
39
+ const {
40
+ macros = true,
41
+ templates = undefined,
42
+ } = opts;
43
+
44
+ // Initialize output and batch
45
+ let output: string[] = [];
46
+ let batch: string[] = [];
47
+ enum State {
48
+ code,
49
+ string,
50
+ comment,
51
+ regex,
52
+ }
53
+ let state: State = State.code;
54
+
55
+ // Function to process the accumulated batch
56
+ const process_code_batch = () => {
57
+ let str = batch.join('')
58
+ // Replace numeric suffix to string.
59
+ .replace(/\b\d+(\.\d+)?(em\b|rem\b|px\b|vh\b|vw\b|%)/g, '"$&"')
60
+ // Replace hex colors.
61
+ .replace(/#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\b/g, '"$&"')
62
+
63
+ // Append the transformed segment to output
64
+ output.push(str);
65
+
66
+ // Clear the batch
67
+ batch = [];
68
+ };
69
+
70
+ // Process string batch.
71
+ const process_string_batch = () => {
72
+ enum BaseIndentState {
73
+ init,
74
+ }
75
+ let str = batch.join('')
76
+
77
+ // Dedent ``` code blocks.
78
+ .replace(/```([\s\S]*?)```/g, (match, code) => {
79
+ // console.log("===========================\nMatched\n"+ code)
80
+
81
+ // Remove leading and trailing empty lines
82
+ // Dont use trim() since that would also remove start indent.
83
+ code = code.replace(/^\s*\n|\s*$/g, '');
84
+
85
+ // Match the base indentation (4 spaces) from the first non-empty line
86
+ const base_indent_match = code.match(/^([ \t]+)/m);
87
+ if (!base_indent_match) return '`' + code + '`'; // No base indent found
88
+
89
+ const base_indent = base_indent_match[1];
90
+
91
+ // Ensure base_indent contains only spaces
92
+ // if (/\t/.test(base_indent)) {
93
+ // throw new Error('Invalid indentation: Tabs are not allowed.');
94
+ // }
95
+
96
+ // Create a regex to remove the base_indent from the start of each line
97
+ const dedent_regex = new RegExp(`^${base_indent}`, 'gm');
98
+
99
+ // Dedent the code by removing base_indent
100
+ const dedented_code = code.replace(dedent_regex, '');
101
+
102
+ return `\`${dedented_code}\``;
103
+ })
104
+
105
+ // Append the transformed segment to output
106
+ output.push(str);
107
+
108
+ // Clear the batch
109
+ batch = [];
110
+ }
111
+
112
+ // Initialize the Iterator
113
+ new vhighlight.Iterator({
114
+ tokenizer: vhighlight.js,
115
+ language: vhighlight.js.language,
116
+ code: input,
117
+ callback(s) {
118
+
119
+ // Get new state.
120
+ let new_state;
121
+ if (s.is_str || s.is_template_literal) {
122
+ new_state = State.string;
123
+ } else if (s.is_comment || s.is_multi_line_comment) {
124
+ new_state = State.comment;
125
+ } else if (s.is_str) {
126
+ new_state = State.regex;
127
+ } else {
128
+ new_state = State.code;
129
+ }
130
+
131
+ // Process new state.
132
+ if (new_state !== state) {
133
+ if (state === State.code) {
134
+ process_code_batch();
135
+ } else if (state === State.string) {
136
+ process_string_batch();
137
+ }
138
+ state = new_state;
139
+ }
140
+
141
+ // Push character.
142
+ if (state === State.code || state === State.string) {
143
+ batch.push(s.char);
144
+ } else {
145
+ output.push(s.char);
146
+ }
147
+ },
148
+ }).iterate();
149
+
150
+ // Process any remaining batch after iteration
151
+ if (batch.length > 0) {
152
+ if (state === State.code) {
153
+ process_code_batch();
154
+ } else if (state === State.string) {
155
+ process_string_batch();
156
+ }
157
+ }
158
+ let content = output.join("");
159
+
160
+ // Apply plugins.
161
+ content = _global_interface_plugin(content) as string;
162
+
163
+ // if (path.includes("ui.ts")) {
164
+ // console.log(content)
165
+ // }
166
+
167
+ // Process macros.
168
+ if (macros) {
169
+ content = _apply_macro_preprocessing(path, content);
170
+ }
171
+
172
+ // Fill templates.
173
+ if (templates !== undefined && Object.keys(templates.length > 0)) {
174
+ content = Utils.fill_templates(content, templates, true);
175
+ }
176
+
177
+ // Response.
178
+ return content;
179
+ }
180
+
181
+ // Split macro args `X, X` args.
182
+ function _split_macro_args(data: string): string[] {
183
+
184
+ // Process args.
185
+ let args = [""];
186
+ const process_arg = () => {
187
+ let arg = args[args.length - 1].trim();
188
+ if (
189
+ (arg.charAt(0) === "'" && arg.charAt(arg.length - 1) === "'") ||
190
+ (arg.charAt(0) === "\"" && arg.charAt(arg.length - 1) === "\"")
191
+ ) {
192
+ arg = arg.slice(1, -1);
193
+ }
194
+ args[args.length - 1] = arg;
195
+ }
196
+
197
+ // Iterate.
198
+ new vhighlight.Iterator({
199
+ tokenizer: vhighlight.js,
200
+ language: vhighlight.js.language,
201
+ code: data,
202
+ callback(state) {
203
+ if (
204
+ state.char === "," &&
205
+ state.curly_depth === 0 &&
206
+ state.bracket_depth === 0 &&
207
+ state.parenth_depth === 0 &&
208
+ !state.is_str &&
209
+ !state.is_regex &&
210
+ !state.is_comment &&
211
+ !state.is_multi_line_comment
212
+ ) {
213
+ process_arg()
214
+ args.push("");
215
+ } else {
216
+ args[args.length - 1] += state.char;
217
+ }
218
+ },
219
+ }).iterate();
220
+
221
+ // Return empty array.
222
+ if (args.length === 1 && args[0] === "") { return []; }
223
+
224
+ // Process arg.
225
+ if (args.length > 0) { process_arg() }
226
+
227
+ // Return args.
228
+ return args;
229
+ }
230
+
231
+ /*
232
+ * Fill all #macro statements.
233
+ */
234
+ function _apply_macro_preprocessing(path: string, data: string) : string {
235
+
236
+ // ----------------------------------------
237
+ // Extract macro statements.
238
+
239
+ let output: string[] = [], is_preprocessor: any = null;
240
+ const macros: Record<string, Macro> = {};
241
+
242
+ let iterator = new vhighlight.Iterator({
243
+ tokenizer: vhighlight.js,
244
+ language: vhighlight.js.language,
245
+ code: data,
246
+ allow_preprocessors: true,
247
+ callback(state) {
248
+
249
+ // End of preprocessor.
250
+ if (is_preprocessor !== undefined && !state.is_preprocessor) {
251
+
252
+ // Extract name & value.
253
+ enum Modes {
254
+ type,
255
+ pre_name,
256
+ name,
257
+ args,
258
+ value,
259
+ };
260
+ let type = "", name = "", value = "", full = "", args = "", args_depth = [0, 0, 0];
261
+ let s: any = is_preprocessor, mode = Modes.type;
262
+ while (s != null && s != state) {
263
+ if (mode === Modes.type) {
264
+ if (s.is_whitespace) {
265
+ mode = Modes.pre_name;
266
+ } else {
267
+ type += s.char;
268
+ }
269
+ } else if (mode === Modes.pre_name && !s.is_whitespace) {
270
+ mode = Modes.name;
271
+ name += s.char;
272
+ } else if (mode === Modes.name) {
273
+ if (s.char === "(") {
274
+ mode = Modes.args;
275
+ args_depth = [s.curly_depth, s.parenth_depth - 1, s.bracket_depth]
276
+ }
277
+ else if (
278
+ s.is_whitespace &&
279
+ s.curly_depth === is_preprocessor.curly_depth &&
280
+ s.parenth_depth === is_preprocessor.parenth_depth &&
281
+ s.bracket_depth === is_preprocessor.bracket_depth
282
+ ) {
283
+ mode = Modes.value;
284
+ } else {
285
+ name += s.char;
286
+ }
287
+ } else if (mode === Modes.args) {
288
+ if (
289
+ s.char === ")" &&
290
+ s.curly_depth === args_depth[0] &&
291
+ s.parenth_depth === args_depth[1] &&
292
+ s.bracket_depth === args_depth[2]
293
+ ) {
294
+ mode = Modes.name;
295
+ } else {
296
+ args += s.char;
297
+ }
298
+ } else if (mode === Modes.value) {
299
+ if (s.char === "\\" && s.next?.is_line_break) {
300
+ // skip.
301
+ } else {
302
+ value += s.char;
303
+ }
304
+ }
305
+ full += s.char;
306
+ s = s.next;
307
+ }
308
+ if (type === "#macro") {
309
+ name = name.trim();
310
+ macros[name] = {
311
+ name,
312
+ value: value.trim(),
313
+ args: args.length === 0 ? [] : _split_macro_args(args),
314
+ };
315
+ } else {
316
+ output.push(full);
317
+ }
318
+
319
+ is_preprocessor = undefined;
320
+ }
321
+
322
+ // Start of preprocessor.
323
+ else if (state.is_preprocessor) {
324
+ if (is_preprocessor === undefined) {
325
+ is_preprocessor = state;
326
+ }
327
+ return ; // dont add to new data.
328
+ }
329
+
330
+ output.push(state.char);
331
+ },
332
+ })
333
+ iterator.iterate();
334
+ data = output.join("");
335
+
336
+ // ----------------------------------------
337
+ // Fill macro statements.
338
+ output.length = 0;
339
+ let buff: string[] = [];
340
+
341
+ // Construct regex to match preprocessor variables
342
+ const macros_keys = Object.keys(macros);
343
+ const regex = new RegExp(`(\\#?|\\b)(${macros_keys.join("|")})(\\([^)]*\\)|\\b)`, 'g');
344
+
345
+ // Fill macro replacements.
346
+ const make_replacements = (buff): string => {
347
+ return buff
348
+ .join('')
349
+ .replace(regex, (match, m1, m2, m3) => {
350
+ const macro = macros[m2];
351
+ if (macro == null) { return match; }
352
+ let value = "";
353
+ if (m1.charAt(0) !== "#") {
354
+ value = m1;
355
+ }
356
+ value += macro.value;
357
+ if (m3 && m3.charAt(0) === "(" && macro.args.length > 0) {
358
+ let args = _split_macro_args(m3.slice(1, -1));
359
+ for (let i = 0; i < macro.args.length; i++) {
360
+ value = value.replace(new RegExp(`\\b${macro.args[i]}\\b`, 'g'), args[i] ?? "")
361
+ }
362
+ return value;
363
+ }
364
+ return value;
365
+ })
366
+ }
367
+
368
+ // Iterator that processes the code
369
+ iterator = new vhighlight.Iterator({
370
+ tokenizer: vhighlight.js,
371
+ language: vhighlight.js.language,
372
+ code: data,
373
+ allow_preprocessors: true,
374
+ callback(state) {
375
+ // Accumulate real code into the buffer
376
+ if (!state.is_str && !state.is_regex && !state.is_comment && !state.is_multi_line_comment) {
377
+ buff.push(state.char);
378
+ }
379
+ else {
380
+
381
+ // Process code buff.
382
+ if (buff.length > 0) {
383
+ output.push(make_replacements(buff));
384
+ buff = [];
385
+ }
386
+
387
+ // Push non-code characters directly to output (strings, comments, etc.)
388
+ output.push(state.char);
389
+ }
390
+ },
391
+ });
392
+
393
+ // Run the iterator to process the code
394
+ iterator.iterate();
395
+
396
+ // Process code buff.
397
+ if (buff.length > 0) {
398
+ output.push(make_replacements(buff));
399
+ }
400
+
401
+ // Return the processed output as a joined string
402
+ return output.join('');
403
+ }
404
+
405
+ // Process all code sections.
406
+ // function _process_code_sections(path: string, data: string, callback: ((code: string) => string) | ((code: string) => string)[]): string {
407
+ // let batch: string[] = [];
408
+ // let is_code = true, start_index: number | undefined = undefined;
409
+ // new vhighlight.Iterator({
410
+ // tokenizer: vhighlight.js,
411
+ // code: data,
412
+ // callback(state) {
413
+ // if (
414
+ // state.is_str ||
415
+ // state.is_regex ||
416
+ // state.is_comment ||
417
+ // state.is_multi_line_comment
418
+ // ) {
419
+ // if (start_index !== undefined) {
420
+ // let code: string = data.slice(start_index, state.index);
421
+ // if (Array.isArray(callback)) {
422
+ // for (const c of callback) {
423
+ // code = c(code);
424
+ // }
425
+ // } else {
426
+ // code = callback(code);
427
+ // }
428
+ // batch.push(code);
429
+ // start_index = undefined;
430
+ // }
431
+ // batch.push(state.char);
432
+ // } else {
433
+ // if (start_index === undefined) {
434
+ // start_index = state.index;
435
+ // }
436
+ // }
437
+ // },
438
+ // }).iterate();
439
+ // if (start_index !== undefined) {
440
+ // let code: string = data.slice(start_index);
441
+ // if (Array.isArray(callback)) {
442
+ // for (const c of callback) {
443
+ // code = c(code);
444
+ // }
445
+ // } else {
446
+ // code = callback(code);
447
+ // }
448
+ // batch.push(code);
449
+ // }
450
+ // return batch.join("");
451
+ // }
452
+
453
+ /* Apply global interfaces. Only used as internal plugin for preprocess().
454
+ With this plugin interfaces can be placed anywhere inside a code file supporting the following syntax.
455
+
456
+ [interface myinterface {
457
+ ...
458
+ }]
459
+ [export interface mynamespace.myothernamespace.myinterface {
460
+ ...
461
+ }]
462
+ */
463
+ function _global_interface_plugin(data: string): string {
464
+ const prefix_output: string[] = [];
465
+ while (true) {
466
+
467
+ // Use a regex without brackets in the character class for clarity
468
+ // and ensure proper spacing handling.
469
+ const regex = /\[(\s*export)*\s*interface\s+([a-zA-Z0-9_.]+)\s*{/g;
470
+ const match = regex.exec(data);
471
+ if (match == null) {
472
+ break; // No more matches.
473
+ }
474
+ const start = match.index;
475
+ let end = -1;
476
+ let curly_start = -1;
477
+ let curly_end = -1;
478
+
479
+ // console.log("interface-plugin: Found global interface", match[0])
480
+
481
+ // Find closing ].
482
+ new vhighlight.Iterator({
483
+ tokenizer: vhighlight.js,
484
+ language: vhighlight.js.language,
485
+ code: data.slice(start + 1),
486
+ callback(s) {
487
+ if (match[0].includes("UI.ReturnResponseDataOptions")) {
488
+ // console.log(({char: s.char, curly_depth: s.curly_depth, bracket_depth: s.bracket_depth}));
489
+ }
490
+ if (curly_start === -1 && s.curly_depth === 1) {
491
+ // console.log({state: 1});
492
+ curly_start = start + 1 + s.index;
493
+ } else if (curly_start !== -1 && curly_end === -1 && s.curly_depth === 0) {
494
+ // console.log({state: 2});
495
+ curly_end = start + 1 + s.index + 1;
496
+ }
497
+ else if (s.bracket_depth === -1) {
498
+ // console.log({state: 3});
499
+ end = start + 1 + s.index + 1;
500
+ return false; // stop iteration
501
+ } else {
502
+ // console.log({unmachted: true})
503
+ }
504
+ },
505
+ }).iterate();
506
+ // if (match[0].includes("UI.ReturnResponseDataOptions") && end === -1) {
507
+ // console.log("DATA:\n"+data)
508
+ // }
509
+
510
+ // If we found a closing brace successfully.
511
+ if (curly_end >= 0 && end !== -1) {
512
+ // console.log("interface-plugin: Found global interface", match[0], "proceed");
513
+
514
+ // Extract the interface body (excluding the initial '{' and final '}')
515
+ // 'start' points at 'i' of 'interface', so the '{' should be at some offset after that.
516
+ // We found 'end' where bracket_depth returned to -1, i.e., after the closing '}'.
517
+ // Adjust slicing as needed if off by one.
518
+
519
+ // Slice out the interface including 'interface ... { ... }'
520
+ // The interface block presumably starts at 'start' and ends at 'end'.
521
+ // We want the inside of the interface without the initial 'i' and final brace.
522
+ // If you want just the inside of the braces, ensure that start+1 and end-1 indices are correct.
523
+
524
+ // Push the interface code into prefix_output. Adjust indices if needed.
525
+ let export_statement = match[1] === undefined ? "" : "export ";
526
+ const names = match[2].split(".");
527
+ let closing_curlies = 0;
528
+ for (let i = 0; i < names.length; i++) {
529
+ if (i + 1 === names.length) {
530
+ prefix_output.push(export_statement, "interface ", names[i], " ", data.slice(curly_start, curly_end));
531
+ if (closing_curlies > 0) {
532
+ prefix_output.push("}".repeat(closing_curlies));
533
+ }
534
+ } else {
535
+ export_statement = "export ";
536
+ prefix_output.push(export_statement, "namespace ", names[i], " { ");
537
+ ++closing_curlies;
538
+ }
539
+ }
540
+ prefix_output.push(";\n");
541
+
542
+ // Remove the interface from the original code.
543
+ data = (start > 0 ? data.slice(0, start) : "") + data.slice(end);
544
+ } else {
545
+ // console.log("interface-plugin: Found global interface", match[0], "dont proceed -",curly_end, end)
546
+ break;
547
+ }
548
+ }
549
+ if (prefix_output.length > 0) {
550
+ return prefix_output.join("") + data;
551
+ }
552
+ return data;
553
+ }
554
+
555
+
556
+ // Variables.
557
+ const volt_frontend = new vlib.Path(`${__dirname}/../../../../../frontend/dist/`).abs().str();
558
+ let volt_exports: undefined | Record<string, string[]> = undefined;
559
+
560
+ // Detect unused volt frontend imports.
561
+ function detect_unused_imports(source_file: ts.SourceFile): string[] {
562
+
563
+ // Load volt exports.
564
+ if (volt_exports === undefined) {
565
+ volt_exports = new vlib.Path(`${__dirname}/../../../../../frontend/exports.json`).load_sync({type: "object"}) as Record<string, string[]>;
566
+ volt_exports["ui/ui.ts"] = ["VoltUI"];
567
+ volt_exports["volt.ts"] = ["Volt"];
568
+ }
569
+
570
+ // Vars.
571
+ // const source_file = ts.createSourceFile(file_path, file_content, ts.ScriptTarget.Latest, true);
572
+ const imported_identifiers = new Set<string>();
573
+ const declared_identifiers = new Set<string>();
574
+ const used_identifiers = new Set<string>();
575
+
576
+ // Helper function to recursively collect declared identifiers
577
+ function collect_declared_identifiers(name: ts.BindingName): void {
578
+ if (ts.isIdentifier(name)) {
579
+ declared_identifiers.add(name.text);
580
+ } else if (ts.isObjectBindingPattern(name) || ts.isArrayBindingPattern(name)) {
581
+ name.elements.forEach(element => {
582
+ if (ts.isBindingElement(element)) {
583
+ collect_declared_identifiers(element.name);
584
+ }
585
+ });
586
+ }
587
+ }
588
+
589
+ // First pass: Collect imported and declared identifiers
590
+ const visit_first_pass = (node: ts.Node) => {
591
+ if (ts.isImportDeclaration(node)) {
592
+ if (node.importClause) {
593
+ const { name, namedBindings } = node.importClause;
594
+ if (name) imported_identifiers.add(name.text);
595
+ if (namedBindings) {
596
+ if (ts.isNamedImports(namedBindings)) {
597
+ namedBindings.elements.forEach(element => imported_identifiers.add(element.name.text));
598
+ } else if (ts.isNamespaceImport(namedBindings)) {
599
+ imported_identifiers.add(namedBindings.name.text);
600
+ }
601
+ }
602
+ }
603
+ }
604
+ if (ts.isVariableDeclaration(node) && node.name) {
605
+ collect_declared_identifiers(node.name);
606
+ } else if (ts.isFunctionDeclaration(node) && node.name) {
607
+ declared_identifiers.add(node.name.text);
608
+ } else if (ts.isClassDeclaration(node) && node.name) {
609
+ declared_identifiers.add(node.name.text);
610
+ }
611
+ if (ts.isIdentifier(node)) {
612
+ used_identifiers.add(node.text);
613
+ }
614
+ ts.forEachChild(node, visit_first_pass);
615
+ };
616
+
617
+ // Second pass: Collect used identifiers
618
+ // const visit_second_pass = (node: ts.Node) => {
619
+ // if (ts.isIdentifier(node)) {
620
+ // used_identifiers.add(node.text);
621
+ // }
622
+ // ts.forEachChild(node, visit_second_pass);
623
+ // };
624
+
625
+ ts.forEachChild(source_file, visit_first_pass);
626
+ // ts.forEachChild(source_file, visit_second_pass);
627
+
628
+ const used_names_set = new Set<string>();
629
+
630
+ // Determine which classes/variables are used without being imported
631
+ const classes_to_check = new Set<string>(Object.values(volt_exports).flat() as string[]);
632
+ classes_to_check.forEach(class_name => {
633
+ if (
634
+ used_identifiers.has(class_name) &&
635
+ !imported_identifiers.has(class_name) &&
636
+ !declared_identifiers.has(class_name)
637
+ ) {
638
+ used_names_set.add(class_name);
639
+ }
640
+ });
641
+
642
+ return Array.from(used_names_set);
643
+ }
644
+
645
+ /**
646
+ * Apply volt frontend auto imports preprocessing
647
+ */
648
+ export function volt_auto_imports(path: string, data: string): undefined | string {
649
+
650
+ // Check auto import
651
+ if (data.includes("@volt-no-auto-import")) {
652
+ return undefined;
653
+ }
654
+ // console.log(path)
655
+
656
+ // Capture names.
657
+ const names = detect_unused_imports(ts.createSourceFile(path, data, ts.ScriptTarget.Latest, true))
658
+
659
+ // Create needed modules.
660
+ const names_per_module = {}, added_names = new Set;
661
+ for (const name of names) {
662
+ for (const m of Object.keys(volt_exports as any)) {
663
+ if (name === "VoltUI") {
664
+ names_per_module["VoltUI"] = [];
665
+ }
666
+ else if (name === "Volt") {
667
+ names_per_module["Volt"] = [];
668
+ }
669
+ else if (
670
+ // name !== "volt.ts" &&
671
+ !path.endsWith(m) &&
672
+ (volt_exports as any)[m].includes(name) &&
673
+ !added_names.has(name)
674
+ ) {
675
+ if (names_per_module[m] === undefined) {
676
+ names_per_module[m] = [];
677
+ }
678
+ names_per_module[m].push(name);
679
+ added_names.add(name)
680
+ // console.log(name, names_per_module[m])
681
+ }
682
+ }
683
+ }
684
+
685
+ // Add global types.
686
+ let prefix =
687
+ `import "${volt_frontend}/modules/string.js"; ` +
688
+ `import "${volt_frontend}/modules/number.js"; ` +
689
+ `import "${volt_frontend}/modules/object.js"; ` +
690
+ `import "${volt_frontend}/modules/array.js"; `;
691
+
692
+ // Add ts code.
693
+ if (names.length > 0) {
694
+ for (const m of Object.keys(names_per_module)) {
695
+ if (m === "VoltUI") {
696
+ prefix += `import * as VoltUI from "${volt_frontend}/ui/ui.js"; `
697
+ } else if (m === "Volt") {
698
+ prefix += `import * as Volt from "${volt_frontend}/volt.js"; `
699
+ } else {
700
+ prefix += `import { ${names_per_module[m].join(", ")} } from "${volt_frontend}/${m.slice(0, -3)}.js"; `
701
+ }
702
+ }
703
+ }
704
+
705
+ // Response.
706
+ return prefix + data;
707
+ }
708
+
709
+
710
+ // console.log("=========================\nOUTPUT\n"+
711
+ // preprocess("X", `
712
+ // tokenize({
713
+ // code = undefined,
714
+ // stop_callback = undefined,
715
+ // build_html = false,
716
+ // is_insert_tokens = false,
717
+ // state = undefined,
718
+ // }: TokenizeOptions = {}): string | Tokens {}
719
+
720
+ // [interface X.Y.TokenizeOptions {
721
+ // code?: string,
722
+ // stop_callback?: Function,
723
+ // build_html?: boolean,
724
+ // is_insert_tokens?: boolean,
725
+ // state?: TokenizerState,
726
+ // } ]
727
+ // [export interface X.Y.TokenizeOptions2 {
728
+ // code?: string,
729
+ // stop_callback?: Function,
730
+ // build_html?: boolean,
731
+ // is_insert_tokens?: boolean,
732
+ // state?: TokenizerState,
733
+ // } ]
734
+ // [interface TokenizeOptions3 {
735
+ // code?: string,
736
+ // stop_callback?: Function,
737
+ // build_html?: boolean,
738
+ // is_insert_tokens?: boolean,
739
+ // state?: TokenizerState,
740
+ // } ]
741
+ // tokenize({
742
+ // code = undefined,
743
+ // stop_callback = undefined,
744
+ // build_html = false,
745
+ // is_insert_tokens = false,
746
+ // state = undefined,
747
+ // }: string | Tokens;
748
+ // tokenize({
749
+ // code = undefined,
750
+ // stop_callback = undefined,
751
+ // build_html = false,
752
+ // is_insert_tokens = false,
753
+ // state = undefined,
754
+ // }: TokenizeOptions = {}): string | Tokens {
755
+
756
+ // // Rese
757
+ // `)
758
+ // );process.exit(1);
759
+
760
+ // console.log("=========================\nOUTPUT\n"+
761
+ // preprocess("X", `
762
+
763
+ // .inner_html(
764
+ // \`\`\`
765
+ // 1 Begin with installing the Libris Client via npm, offering seamless interaction through either the Libris Client API or the intuitive Libris CLI.
766
+ // <div style='height: 0.5em'></div>
767
+ // More information about installing libris can be found in the \${ThemeV2.Link("documentation", "/docs?id=getting_started/installation")}.
768
+ // \`\`\`
769
+ // ),
770
+
771
+ // .inner_html(
772
+ // \`\`\`
773
+ // 2 Begin with installing the Libris Client via npm, offering seamless interaction through either the Libris Client API or the intuitive Libris CLI.
774
+ // <div style='height: 0.5em'></div>
775
+ // More information about installing libris can be found in the \${ThemeV2.Link("documentation", "/docs?id=getting_started/installation")}.
776
+ // \`\`\`
777
+ // ),
778
+
779
+ // .inner_html(
780
+ // \`\`\`3 Begin with installing the Libris Client via npm, offering seamless interaction through either the Libris Client API or the intuitive Libris CLI.
781
+ // <div style='height: 0.5em'></div>
782
+ // More information about installing libris can be found in the \${ThemeV2.Link("documentation", "/docs?id=getting_started/installation")}.
783
+ // \`\`\`
784
+ // ),
785
+
786
+ // \`\`\`
787
+ // ---
788
+ // title: Lorem Ipsum
789
+ // name: lorem_ipsum.md
790
+ // ---
791
+
792
+ // # Lorem ipsum
793
+ // Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
794
+ // \`\`\`
795
+
796
+ // \`\`\`
797
+ // {
798
+ // "name": "My Project", // The name of your project.
799
+ // "version": "1.1", // The documentation version.
800
+ // "include": [ // The source files you want to include, directories are allowed.
801
+ // "src/load.js"
802
+ // ],
803
+ // "documents": [
804
+ // "pages/lorem_ipsum.md" // The source path to the document.
805
+ // ],
806
+ // "output": "docs.html" // The output path of the generated HTML data.
807
+ // }
808
+ // \`\`\`
809
+ // `)
810
+ // );process.exit(1);
811
+
812
+ export default {preprocess, volt_auto_imports};