@axium/server 0.24.1 → 0.26.0

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 (389) hide show
  1. package/build/client/_app/immutable/assets/account.dAAx7bby.css +1 -0
  2. package/build/client/_app/immutable/assets/account.dAAx7bby.css.br +0 -0
  3. package/build/client/_app/immutable/assets/account.dAAx7bby.css.gz +0 -0
  4. package/build/client/_app/immutable/assets/list.DVGH0BeP.css +1 -0
  5. package/build/client/_app/immutable/assets/list.DVGH0BeP.css.br +0 -0
  6. package/build/client/_app/immutable/assets/list.DVGH0BeP.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/styles.D8SZ-PeY.css +1 -0
  8. package/build/client/_app/immutable/assets/styles.D8SZ-PeY.css.br +2 -0
  9. package/build/client/_app/immutable/assets/styles.D8SZ-PeY.css.gz +0 -0
  10. package/build/client/_app/immutable/chunks/46qGscyh.js +2 -0
  11. package/build/client/_app/immutable/chunks/46qGscyh.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/46qGscyh.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/B2Vkpbkw.js +2 -0
  14. package/build/client/_app/immutable/chunks/B2Vkpbkw.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/B2Vkpbkw.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/BKixenYx.js +1 -0
  17. package/build/client/_app/immutable/chunks/BKixenYx.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/BKixenYx.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/BLtAtlP3.js +1 -0
  20. package/build/client/_app/immutable/chunks/BLtAtlP3.js.br +2 -0
  21. package/build/client/_app/immutable/chunks/BLtAtlP3.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/BNTlty5m.js +1 -0
  23. package/build/client/_app/immutable/chunks/BNTlty5m.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/BNTlty5m.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/Beh6Ec8J.js +1 -0
  26. package/build/client/_app/immutable/chunks/Beh6Ec8J.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/Beh6Ec8J.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/BrUe-Qen.js +1 -0
  29. package/build/client/_app/immutable/chunks/BrUe-Qen.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/BrUe-Qen.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/Bs4cD_pX.js +1 -0
  32. package/build/client/_app/immutable/chunks/Bs4cD_pX.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/Bs4cD_pX.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/C62F-tXu.js +1 -0
  35. package/build/client/_app/immutable/chunks/C62F-tXu.js.br +1 -0
  36. package/build/client/_app/immutable/chunks/C62F-tXu.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/CUBtP2L9.js +23 -0
  38. package/build/client/_app/immutable/chunks/CUBtP2L9.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/CUBtP2L9.js.gz +0 -0
  40. package/build/client/_app/immutable/chunks/Ch16TNvP.js +1 -0
  41. package/build/client/_app/immutable/chunks/Ch16TNvP.js.br +0 -0
  42. package/build/client/_app/immutable/chunks/Ch16TNvP.js.gz +0 -0
  43. package/build/client/_app/immutable/chunks/CoYD6HNm.js +1 -0
  44. package/build/client/_app/immutable/chunks/CoYD6HNm.js.br +0 -0
  45. package/build/client/_app/immutable/chunks/CoYD6HNm.js.gz +0 -0
  46. package/build/client/_app/immutable/chunks/D40Zn55h.js +1 -0
  47. package/build/client/_app/immutable/chunks/D40Zn55h.js.br +0 -0
  48. package/build/client/_app/immutable/chunks/D40Zn55h.js.gz +0 -0
  49. package/build/client/_app/immutable/chunks/DW7-1esk.js +21 -0
  50. package/build/client/_app/immutable/chunks/DW7-1esk.js.br +0 -0
  51. package/build/client/_app/immutable/chunks/DW7-1esk.js.gz +0 -0
  52. package/build/client/_app/immutable/chunks/DY4fWHx_.js +1 -0
  53. package/build/client/_app/immutable/chunks/DY4fWHx_.js.br +0 -0
  54. package/build/client/_app/immutable/chunks/DY4fWHx_.js.gz +0 -0
  55. package/build/client/_app/immutable/chunks/DvOBbqVY.js +1 -0
  56. package/build/client/_app/immutable/chunks/DvOBbqVY.js.br +0 -0
  57. package/build/client/_app/immutable/chunks/DvOBbqVY.js.gz +0 -0
  58. package/build/client/_app/immutable/chunks/DwZYWemd.js +1 -0
  59. package/build/client/_app/immutable/chunks/DwZYWemd.js.br +0 -0
  60. package/build/client/_app/immutable/chunks/DwZYWemd.js.gz +0 -0
  61. package/build/client/_app/immutable/chunks/Dy2Ho0cF.js +1 -0
  62. package/build/client/_app/immutable/chunks/Dy2Ho0cF.js.br +0 -0
  63. package/build/client/_app/immutable/chunks/Dy2Ho0cF.js.gz +0 -0
  64. package/build/client/_app/immutable/chunks/FTv0qR3w.js +1 -0
  65. package/build/client/_app/immutable/chunks/FTv0qR3w.js.br +0 -0
  66. package/build/client/_app/immutable/chunks/FTv0qR3w.js.gz +0 -0
  67. package/build/client/_app/immutable/chunks/NeK0YGoY.js +1 -0
  68. package/build/client/_app/immutable/chunks/NeK0YGoY.js.br +0 -0
  69. package/build/client/_app/immutable/chunks/NeK0YGoY.js.gz +0 -0
  70. package/build/client/_app/immutable/chunks/aArGsq9c.js +1 -0
  71. package/build/client/_app/immutable/chunks/aArGsq9c.js.br +0 -0
  72. package/build/client/_app/immutable/chunks/aArGsq9c.js.gz +0 -0
  73. package/build/client/_app/immutable/chunks/lH47zGKU.js +1 -0
  74. package/build/client/_app/immutable/chunks/lH47zGKU.js.br +0 -0
  75. package/build/client/_app/immutable/chunks/lH47zGKU.js.gz +0 -0
  76. package/build/client/_app/immutable/chunks/sMHjBQqw.js +1 -0
  77. package/build/client/_app/immutable/chunks/sMHjBQqw.js.br +0 -0
  78. package/build/client/_app/immutable/chunks/sMHjBQqw.js.gz +0 -0
  79. package/build/client/_app/immutable/chunks/vQfHcJV6.js +2 -0
  80. package/build/client/_app/immutable/chunks/vQfHcJV6.js.br +0 -0
  81. package/build/client/_app/immutable/chunks/vQfHcJV6.js.gz +0 -0
  82. package/build/client/_app/immutable/entry/app.pLVZKpSD.js +2 -0
  83. package/build/client/_app/immutable/entry/app.pLVZKpSD.js.br +0 -0
  84. package/build/client/_app/immutable/entry/app.pLVZKpSD.js.gz +0 -0
  85. package/build/client/_app/immutable/entry/start.CUaVsIrY.js +1 -0
  86. package/build/client/_app/immutable/entry/start.CUaVsIrY.js.br +2 -0
  87. package/build/client/_app/immutable/entry/start.CUaVsIrY.js.gz +0 -0
  88. package/build/client/_app/immutable/nodes/0.D7hET-Bq.js +1 -0
  89. package/build/client/_app/immutable/nodes/0.D7hET-Bq.js.br +0 -0
  90. package/build/client/_app/immutable/nodes/0.D7hET-Bq.js.gz +0 -0
  91. package/build/client/_app/immutable/nodes/1.BWU-JJm_.js +1 -0
  92. package/build/client/_app/immutable/nodes/1.BWU-JJm_.js.br +2 -0
  93. package/build/client/_app/immutable/nodes/1.BWU-JJm_.js.gz +0 -0
  94. package/build/client/_app/immutable/nodes/10.C5N2XBee.js +1 -0
  95. package/build/client/_app/immutable/nodes/10.C5N2XBee.js.br +0 -0
  96. package/build/client/_app/immutable/nodes/10.C5N2XBee.js.gz +0 -0
  97. package/build/client/_app/immutable/nodes/11.CerbuSAv.js +1 -0
  98. package/build/client/_app/immutable/nodes/11.CerbuSAv.js.br +0 -0
  99. package/build/client/_app/immutable/nodes/11.CerbuSAv.js.gz +0 -0
  100. package/build/client/_app/immutable/nodes/12.Z4B9zS78.js +1 -0
  101. package/build/client/_app/immutable/nodes/12.Z4B9zS78.js.br +0 -0
  102. package/build/client/_app/immutable/nodes/12.Z4B9zS78.js.gz +0 -0
  103. package/build/client/_app/immutable/nodes/13.CuICShck.js +1 -0
  104. package/build/client/_app/immutable/nodes/13.CuICShck.js.br +0 -0
  105. package/build/client/_app/immutable/nodes/13.CuICShck.js.gz +0 -0
  106. package/build/client/_app/immutable/nodes/14.BSEF5oaF.js +1 -0
  107. package/build/client/_app/immutable/nodes/14.BSEF5oaF.js.br +0 -0
  108. package/build/client/_app/immutable/nodes/14.BSEF5oaF.js.gz +0 -0
  109. package/build/client/_app/immutable/nodes/15.D1nsmo6j.js +1 -0
  110. package/build/client/_app/immutable/nodes/15.D1nsmo6j.js.br +0 -0
  111. package/build/client/_app/immutable/nodes/15.D1nsmo6j.js.gz +0 -0
  112. package/build/client/_app/immutable/nodes/2.DQ1JcYgz.js +1 -0
  113. package/build/client/_app/immutable/nodes/2.DQ1JcYgz.js.br +0 -0
  114. package/build/client/_app/immutable/nodes/2.DQ1JcYgz.js.gz +0 -0
  115. package/build/client/_app/immutable/nodes/3.BJp2JEtW.js +1 -0
  116. package/build/client/_app/immutable/nodes/3.BJp2JEtW.js.br +0 -0
  117. package/build/client/_app/immutable/nodes/3.BJp2JEtW.js.gz +0 -0
  118. package/build/client/_app/immutable/nodes/4.Cvn_QsIx.js +1 -0
  119. package/build/client/_app/immutable/nodes/4.Cvn_QsIx.js.br +0 -0
  120. package/build/client/_app/immutable/nodes/4.Cvn_QsIx.js.gz +0 -0
  121. package/build/client/_app/immutable/nodes/5.DgPP9GX3.js +1 -0
  122. package/build/client/_app/immutable/nodes/5.DgPP9GX3.js.br +0 -0
  123. package/build/client/_app/immutable/nodes/5.DgPP9GX3.js.gz +0 -0
  124. package/build/client/_app/immutable/nodes/6.DKIzms8i.js +2 -0
  125. package/build/client/_app/immutable/nodes/6.DKIzms8i.js.br +0 -0
  126. package/build/client/_app/immutable/nodes/6.DKIzms8i.js.gz +0 -0
  127. package/build/client/_app/immutable/nodes/7.3UigVXV4.js +1 -0
  128. package/build/client/_app/immutable/nodes/7.3UigVXV4.js.br +0 -0
  129. package/build/client/_app/immutable/nodes/7.3UigVXV4.js.gz +0 -0
  130. package/build/client/_app/immutable/nodes/8.B8s2TdNQ.js +1 -0
  131. package/build/client/_app/immutable/nodes/8.B8s2TdNQ.js.br +0 -0
  132. package/build/client/_app/immutable/nodes/8.B8s2TdNQ.js.gz +0 -0
  133. package/build/client/_app/immutable/nodes/9.LBMMe2kc.js +1 -0
  134. package/build/client/_app/immutable/nodes/9.LBMMe2kc.js.br +0 -0
  135. package/build/client/_app/immutable/nodes/9.LBMMe2kc.js.gz +0 -0
  136. package/build/client/_app/version.json +1 -1
  137. package/build/client/_app/version.json.br +0 -0
  138. package/build/client/_app/version.json.gz +0 -0
  139. package/build/client/styles.css +28 -0
  140. package/build/client/styles.css.br +0 -0
  141. package/build/client/styles.css.gz +0 -0
  142. package/build/handler.js +20 -3
  143. package/build/server/chunks/0-CNbALTKz.js +9 -0
  144. package/build/server/chunks/0-CNbALTKz.js.map +1 -0
  145. package/build/server/chunks/1-Dgxy393u.js +9 -0
  146. package/build/server/chunks/1-Dgxy393u.js.map +1 -0
  147. package/build/server/chunks/10-DovmbqKa.js +14 -0
  148. package/build/server/chunks/10-DovmbqKa.js.map +1 -0
  149. package/build/server/chunks/11-CRK_ubcl.js +14 -0
  150. package/build/server/chunks/11-CRK_ubcl.js.map +1 -0
  151. package/build/server/chunks/12-SbQlwMfe.js +9 -0
  152. package/build/server/chunks/12-SbQlwMfe.js.map +1 -0
  153. package/build/server/chunks/13-CbniIW7F.js +14 -0
  154. package/build/server/chunks/13-CbniIW7F.js.map +1 -0
  155. package/build/server/chunks/14-D9Vb_8Yx.js +9 -0
  156. package/build/server/chunks/14-D9Vb_8Yx.js.map +1 -0
  157. package/build/server/chunks/15-D-75Hdef.js +9 -0
  158. package/build/server/chunks/15-D-75Hdef.js.map +1 -0
  159. package/build/server/chunks/2-57exN8ae.js +14 -0
  160. package/build/server/chunks/2-57exN8ae.js.map +1 -0
  161. package/build/server/chunks/3-DNQft-pY.js +9 -0
  162. package/build/server/chunks/{2-CXlrhpR6.js.map → 3-DNQft-pY.js.map} +1 -1
  163. package/build/server/chunks/4-D9Bwp-f8.js +14 -0
  164. package/build/server/chunks/4-D9Bwp-f8.js.map +1 -0
  165. package/build/server/chunks/5-COEQwZNP.js +14 -0
  166. package/build/server/chunks/5-COEQwZNP.js.map +1 -0
  167. package/build/server/chunks/6-RT4yiDcP.js +14 -0
  168. package/build/server/chunks/6-RT4yiDcP.js.map +1 -0
  169. package/build/server/chunks/7-CVqF_r5D.js +14 -0
  170. package/build/server/chunks/7-CVqF_r5D.js.map +1 -0
  171. package/build/server/chunks/8-C5SO-sVH.js +14 -0
  172. package/build/server/chunks/8-C5SO-sVH.js.map +1 -0
  173. package/build/server/chunks/9-DoCOKtY-.js +14 -0
  174. package/build/server/chunks/9-DoCOKtY-.js.map +1 -0
  175. package/build/server/chunks/FormDialog-ZCY0chY1.js +102 -0
  176. package/build/server/chunks/FormDialog-ZCY0chY1.js.map +1 -0
  177. package/build/server/chunks/Icon-BVo9qbDf.js +30 -0
  178. package/build/server/chunks/Icon-BVo9qbDf.js.map +1 -0
  179. package/build/server/chunks/Logout-CmBZgu0j.js +46 -0
  180. package/build/server/chunks/Logout-CmBZgu0j.js.map +1 -0
  181. package/build/server/chunks/_layout.svelte-DuS006VZ.js +33 -0
  182. package/build/server/chunks/_layout.svelte-DuS006VZ.js.map +1 -0
  183. package/build/server/chunks/_page.svelte-BFVobcI7.js +14 -0
  184. package/build/server/chunks/_page.svelte-BFVobcI7.js.map +1 -0
  185. package/build/server/chunks/_page.svelte-B_cvhWJS.js +66 -0
  186. package/build/server/chunks/_page.svelte-B_cvhWJS.js.map +1 -0
  187. package/build/server/chunks/_page.svelte-BriaBR9l.js +28 -0
  188. package/build/server/chunks/_page.svelte-BriaBR9l.js.map +1 -0
  189. package/build/server/chunks/_page.svelte-BtQQzT7H.js +72 -0
  190. package/build/server/chunks/_page.svelte-BtQQzT7H.js.map +1 -0
  191. package/build/server/chunks/_page.svelte-C8D3c3yB.js +64 -0
  192. package/build/server/chunks/_page.svelte-C8D3c3yB.js.map +1 -0
  193. package/build/server/chunks/_page.svelte-CVSb9eHQ.js +24 -0
  194. package/build/server/chunks/_page.svelte-CVSb9eHQ.js.map +1 -0
  195. package/build/server/chunks/_page.svelte-CwRjZqL7.js +107 -0
  196. package/build/server/chunks/_page.svelte-CwRjZqL7.js.map +1 -0
  197. package/build/server/chunks/_page.svelte-D9A9RYjx.js +233 -0
  198. package/build/server/chunks/_page.svelte-D9A9RYjx.js.map +1 -0
  199. package/build/server/chunks/_page.svelte-DGhwqWMM.js +34 -0
  200. package/build/server/chunks/_page.svelte-DGhwqWMM.js.map +1 -0
  201. package/build/server/chunks/_page.svelte-DTvnX95_.js +75 -0
  202. package/build/server/chunks/_page.svelte-DTvnX95_.js.map +1 -0
  203. package/build/server/chunks/_page.svelte-DUfwpXfC.js +122 -0
  204. package/build/server/chunks/_page.svelte-DUfwpXfC.js.map +1 -0
  205. package/build/server/chunks/_page.svelte-DxDoD3rZ.js +37 -0
  206. package/build/server/chunks/_page.svelte-DxDoD3rZ.js.map +1 -0
  207. package/build/server/chunks/_page.svelte-VDBvShZ8.js +6 -0
  208. package/build/server/chunks/_page.svelte-VDBvShZ8.js.map +1 -0
  209. package/build/server/chunks/account-Bf_llRe2.js +446 -0
  210. package/build/server/chunks/account-Bf_llRe2.js.map +1 -0
  211. package/build/server/chunks/auth_redirect-olBYiIF2.js +24 -0
  212. package/build/server/chunks/auth_redirect-olBYiIF2.js.map +1 -0
  213. package/build/server/chunks/color-K_MR7m8s.js +14 -0
  214. package/build/server/chunks/color-K_MR7m8s.js.map +1 -0
  215. package/build/server/chunks/context-R2425nfV.js +64 -0
  216. package/build/server/chunks/context-R2425nfV.js.map +1 -0
  217. package/build/server/chunks/{error.svelte-DNQXZmIO.js → error.svelte-CkSCwrMJ.js} +7 -6
  218. package/build/server/chunks/error.svelte-CkSCwrMJ.js.map +1 -0
  219. package/build/server/chunks/index-CIEcmmdN.js +890 -0
  220. package/build/server/chunks/index-CIEcmmdN.js.map +1 -0
  221. package/build/server/chunks/{index-CvHf_GW2.js → index-Tt4zVDIZ.js} +843 -438
  222. package/build/server/chunks/index-Tt4zVDIZ.js.map +1 -0
  223. package/build/server/chunks/layout.svelte-UxsTmhKc.js +8 -0
  224. package/build/server/chunks/layout.svelte-UxsTmhKc.js.map +1 -0
  225. package/build/server/chunks/{string-DLbvtT1R.js → numbers-DL8C9q4W.js} +1 -71
  226. package/build/server/chunks/numbers-DL8C9q4W.js.map +1 -0
  227. package/build/server/chunks/{FormDialog-CB-2YGWi.js → user2-CRfK67II.js} +12 -206
  228. package/build/server/chunks/user2-CRfK67II.js.map +1 -0
  229. package/build/server/chunks/utils-h74ns7K6.js.map +1 -1
  230. package/build/server/index.js +2304 -1140
  231. package/build/server/index.js.map +1 -1
  232. package/build/server/manifest.js +78 -13
  233. package/build/server/manifest.js.map +1 -1
  234. package/dist/acl.d.ts +1 -2
  235. package/dist/acl.js +1 -1
  236. package/dist/api/acl.js +4 -4
  237. package/dist/api/admin.d.ts +1 -0
  238. package/dist/api/admin.js +152 -0
  239. package/dist/api/index.d.ts +2 -0
  240. package/dist/api/index.js +2 -0
  241. package/dist/api/metadata.js +5 -5
  242. package/dist/api/passkeys.js +10 -10
  243. package/dist/api/register.js +4 -4
  244. package/dist/api/session.js +5 -5
  245. package/dist/api/users.js +52 -49
  246. package/dist/audit.d.ts +8 -39
  247. package/dist/audit.js +13 -16
  248. package/dist/auth.d.ts +4 -11
  249. package/dist/auth.js +4 -4
  250. package/dist/cli.js +515 -559
  251. package/dist/config.d.ts +26 -16
  252. package/dist/config.js +65 -36
  253. package/dist/database.d.ts +3 -4
  254. package/dist/database.js +19 -18
  255. package/dist/internal_requests.d.ts +3 -0
  256. package/dist/internal_requests.js +119 -0
  257. package/dist/io.d.ts +0 -49
  258. package/dist/io.js +23 -171
  259. package/dist/linking.d.ts +0 -1
  260. package/dist/linking.js +5 -8
  261. package/dist/requests.d.ts +10 -6
  262. package/dist/requests.js +17 -15
  263. package/dist/routes.d.ts +6 -10
  264. package/dist/routes.js +7 -8
  265. package/dist/serve.d.ts +7 -2
  266. package/dist/serve.js +170 -13
  267. package/dist/state.js +2 -1
  268. package/package.json +8 -7
  269. package/routes/account/+page.svelte +5 -109
  270. package/routes/admin/+layout.svelte +56 -0
  271. package/routes/admin/+layout.ts +31 -0
  272. package/routes/admin/+page.svelte +39 -0
  273. package/routes/admin/+page.ts +7 -0
  274. package/routes/admin/audit/+page.svelte +158 -0
  275. package/routes/admin/audit/+page.ts +22 -0
  276. package/routes/admin/audit/[id]/+page.svelte +43 -0
  277. package/routes/admin/audit/[id]/+page.ts +9 -0
  278. package/routes/admin/audit/styles.css +31 -0
  279. package/routes/admin/config/+page.svelte +28 -0
  280. package/routes/admin/config/+page.ts +9 -0
  281. package/routes/admin/plugins/+page.svelte +23 -0
  282. package/routes/admin/plugins/+page.ts +7 -0
  283. package/routes/admin/users/+page.svelte +60 -0
  284. package/routes/admin/users/+page.ts +9 -0
  285. package/routes/admin/users/[id]/+page.svelte +108 -0
  286. package/routes/admin/users/[id]/+page.ts +17 -0
  287. package/routes/login/client/+page.svelte +72 -0
  288. package/routes/login/client/+page.ts +27 -0
  289. package/routes/tsconfig.json +1 -1
  290. package/svelte.config.js +4 -10
  291. package/{web/template.html → template.html} +1 -1
  292. package/{web/tsconfig.json → web.tsconfig.json} +2 -2
  293. package/build/client/_app/immutable/chunks/B1E1cVbi.js +0 -1
  294. package/build/client/_app/immutable/chunks/B1E1cVbi.js.br +0 -0
  295. package/build/client/_app/immutable/chunks/B1E1cVbi.js.gz +0 -0
  296. package/build/client/_app/immutable/chunks/CIywFg5g.js +0 -3
  297. package/build/client/_app/immutable/chunks/CIywFg5g.js.br +0 -0
  298. package/build/client/_app/immutable/chunks/CIywFg5g.js.gz +0 -0
  299. package/build/client/_app/immutable/chunks/D3hk2v8y.js +0 -1
  300. package/build/client/_app/immutable/chunks/D3hk2v8y.js.br +0 -2
  301. package/build/client/_app/immutable/chunks/D3hk2v8y.js.gz +0 -0
  302. package/build/client/_app/immutable/chunks/D4Bce_hb.js +0 -1
  303. package/build/client/_app/immutable/chunks/D4Bce_hb.js.br +0 -0
  304. package/build/client/_app/immutable/chunks/D4Bce_hb.js.gz +0 -0
  305. package/build/client/_app/immutable/chunks/D9TfJrfD.js +0 -1
  306. package/build/client/_app/immutable/chunks/D9TfJrfD.js.br +0 -0
  307. package/build/client/_app/immutable/chunks/D9TfJrfD.js.gz +0 -0
  308. package/build/client/_app/immutable/chunks/DJeR1n-B.js +0 -51
  309. package/build/client/_app/immutable/chunks/DJeR1n-B.js.br +0 -0
  310. package/build/client/_app/immutable/chunks/DJeR1n-B.js.gz +0 -0
  311. package/build/client/_app/immutable/chunks/DsnmJJEf.js +0 -1
  312. package/build/client/_app/immutable/chunks/DsnmJJEf.js.br +0 -2
  313. package/build/client/_app/immutable/chunks/DsnmJJEf.js.gz +0 -0
  314. package/build/client/_app/immutable/chunks/Dy1O3iBu.js +0 -2
  315. package/build/client/_app/immutable/chunks/Dy1O3iBu.js.br +0 -0
  316. package/build/client/_app/immutable/chunks/Dy1O3iBu.js.gz +0 -0
  317. package/build/client/_app/immutable/chunks/pba7IodQ.js +0 -1
  318. package/build/client/_app/immutable/chunks/pba7IodQ.js.br +0 -0
  319. package/build/client/_app/immutable/chunks/pba7IodQ.js.gz +0 -0
  320. package/build/client/_app/immutable/entry/app.ChtScU8h.js +0 -2
  321. package/build/client/_app/immutable/entry/app.ChtScU8h.js.br +0 -0
  322. package/build/client/_app/immutable/entry/app.ChtScU8h.js.gz +0 -0
  323. package/build/client/_app/immutable/entry/start.DdjgBKiR.js +0 -1
  324. package/build/client/_app/immutable/entry/start.DdjgBKiR.js.br +0 -2
  325. package/build/client/_app/immutable/entry/start.DdjgBKiR.js.gz +0 -0
  326. package/build/client/_app/immutable/nodes/0.DlE8ZTIF.js +0 -1
  327. package/build/client/_app/immutable/nodes/0.DlE8ZTIF.js.br +0 -0
  328. package/build/client/_app/immutable/nodes/0.DlE8ZTIF.js.gz +0 -0
  329. package/build/client/_app/immutable/nodes/1.DRjfV_5C.js +0 -1
  330. package/build/client/_app/immutable/nodes/1.DRjfV_5C.js.br +0 -0
  331. package/build/client/_app/immutable/nodes/1.DRjfV_5C.js.gz +0 -0
  332. package/build/client/_app/immutable/nodes/2.CvEpuMc7.js +0 -1
  333. package/build/client/_app/immutable/nodes/2.CvEpuMc7.js.br +0 -0
  334. package/build/client/_app/immutable/nodes/2.CvEpuMc7.js.gz +0 -0
  335. package/build/client/_app/immutable/nodes/3.CVudd8x2.js +0 -7
  336. package/build/client/_app/immutable/nodes/3.CVudd8x2.js.br +0 -0
  337. package/build/client/_app/immutable/nodes/3.CVudd8x2.js.gz +0 -0
  338. package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js +0 -1
  339. package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js.br +0 -0
  340. package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js.gz +0 -0
  341. package/build/client/_app/immutable/nodes/5.CGoBaVII.js +0 -1
  342. package/build/client/_app/immutable/nodes/5.CGoBaVII.js.br +0 -0
  343. package/build/client/_app/immutable/nodes/5.CGoBaVII.js.gz +0 -0
  344. package/build/client/_app/immutable/nodes/6.BtB2uWXy.js +0 -1
  345. package/build/client/_app/immutable/nodes/6.BtB2uWXy.js.br +0 -0
  346. package/build/client/_app/immutable/nodes/6.BtB2uWXy.js.gz +0 -0
  347. package/build/server/chunks/0-DgHTujtC.js +0 -9
  348. package/build/server/chunks/0-DgHTujtC.js.map +0 -1
  349. package/build/server/chunks/1-B3zVLOO8.js +0 -9
  350. package/build/server/chunks/1-B3zVLOO8.js.map +0 -1
  351. package/build/server/chunks/2-CXlrhpR6.js +0 -9
  352. package/build/server/chunks/3-CGT4Ugys.js +0 -13
  353. package/build/server/chunks/3-CGT4Ugys.js.map +0 -1
  354. package/build/server/chunks/4-BscEiwUk.js +0 -9
  355. package/build/server/chunks/4-BscEiwUk.js.map +0 -1
  356. package/build/server/chunks/5-H0ePIJBE.js +0 -9
  357. package/build/server/chunks/5-H0ePIJBE.js.map +0 -1
  358. package/build/server/chunks/6-BrPpcagX.js +0 -9
  359. package/build/server/chunks/6-BrPpcagX.js.map +0 -1
  360. package/build/server/chunks/FormDialog-CB-2YGWi.js.map +0 -1
  361. package/build/server/chunks/Logout-LKOt-AST.js +0 -45
  362. package/build/server/chunks/Logout-LKOt-AST.js.map +0 -1
  363. package/build/server/chunks/_page.svelte-B1LK5J87.js +0 -11
  364. package/build/server/chunks/_page.svelte-B1LK5J87.js.map +0 -1
  365. package/build/server/chunks/_page.svelte-CMtkwvbP.js +0 -68
  366. package/build/server/chunks/_page.svelte-CMtkwvbP.js.map +0 -1
  367. package/build/server/chunks/_page.svelte-CbI2KxeA.js +0 -62
  368. package/build/server/chunks/_page.svelte-CbI2KxeA.js.map +0 -1
  369. package/build/server/chunks/_page.svelte-D1_WJoyP.js +0 -6
  370. package/build/server/chunks/_page.svelte-D1_WJoyP.js.map +0 -1
  371. package/build/server/chunks/_page.svelte-d01Hl2Ia.js +0 -639
  372. package/build/server/chunks/_page.svelte-d01Hl2Ia.js.map +0 -1
  373. package/build/server/chunks/error.svelte-DNQXZmIO.js.map +0 -1
  374. package/build/server/chunks/hooks.server-CQhG9POo.js +0 -17298
  375. package/build/server/chunks/hooks.server-CQhG9POo.js.map +0 -1
  376. package/build/server/chunks/index-CvHf_GW2.js.map +0 -1
  377. package/build/server/chunks/index-RTKpMYZ1.js +0 -397
  378. package/build/server/chunks/index-RTKpMYZ1.js.map +0 -1
  379. package/build/server/chunks/layout.svelte-BSvrn-4a.js +0 -8
  380. package/build/server/chunks/layout.svelte-BSvrn-4a.js.map +0 -1
  381. package/build/server/chunks/string-DLbvtT1R.js.map +0 -1
  382. package/dist/apps.d.ts +0 -6
  383. package/dist/apps.js +0 -6
  384. package/dist/plugins.d.ts +0 -49
  385. package/dist/plugins.js +0 -80
  386. package/dist/sveltekit.d.ts +0 -8
  387. package/dist/sveltekit.js +0 -60
  388. package/web/hooks.server.ts +0 -4
  389. /package/{axiumd.service → axium.service} +0 -0
package/dist/config.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type DeepRequired } from 'utilium';
2
2
  import * as z from 'zod';
3
3
  export declare const ConfigSchema: z.ZodObject<{
4
+ admin_api: z.ZodOptional<z.ZodBoolean>;
4
5
  allow_new_users: z.ZodOptional<z.ZodBoolean>;
5
6
  apps: z.ZodOptional<z.ZodObject<{
6
7
  disabled: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -8,8 +9,8 @@ export declare const ConfigSchema: z.ZodObject<{
8
9
  audit: z.ZodOptional<z.ZodObject<{
9
10
  allow_raw: z.ZodOptional<z.ZodBoolean>;
10
11
  retention: z.ZodOptional<z.ZodNumber>;
11
- min_severity: z.ZodOptional<z.ZodLiteral<"error" | "debug" | "Error" | "notice" | "info" | "warning" | "Emergency" | "Alert" | "Critical" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical">>;
12
- auto_suspend: z.ZodOptional<z.ZodLiteral<"error" | "debug" | "Error" | "notice" | "info" | "warning" | "Emergency" | "Alert" | "Critical" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical">>;
12
+ min_severity: z.ZodOptional<z.ZodLiteral<"Emergency" | "Alert" | "Critical" | "Error" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical" | "error" | "warning" | "notice" | "info" | "debug">>;
13
+ auto_suspend: z.ZodOptional<z.ZodLiteral<"Emergency" | "Alert" | "Critical" | "Error" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical" | "error" | "warning" | "notice" | "info" | "debug">>;
13
14
  }, z.core.$loose>>;
14
15
  auth: z.ZodOptional<z.ZodObject<{
15
16
  origin: z.ZodOptional<z.ZodString>;
@@ -33,17 +34,16 @@ export declare const ConfigSchema: z.ZodObject<{
33
34
  log: z.ZodOptional<z.ZodObject<{
34
35
  level: z.ZodOptional<z.ZodEnum<{
35
36
  error: "error";
36
- debug: "debug";
37
- warn: "warn";
38
37
  notice: "notice";
39
38
  info: "info";
39
+ debug: "debug";
40
+ warn: "warn";
40
41
  }>>;
41
42
  console: z.ZodOptional<z.ZodBoolean>;
42
43
  }, z.core.$loose>>;
44
+ request_size_limit: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
43
45
  show_duplicate_state: z.ZodOptional<z.ZodBoolean>;
44
46
  web: z.ZodOptional<z.ZodObject<{
45
- assets: z.ZodOptional<z.ZodString>;
46
- build: z.ZodOptional<z.ZodString>;
47
47
  disable_cache: z.ZodOptional<z.ZodBoolean>;
48
48
  port: z.ZodOptional<z.ZodNumber>;
49
49
  prefix: z.ZodOptional<z.ZodString>;
@@ -51,13 +51,13 @@ export declare const ConfigSchema: z.ZodObject<{
51
51
  secure: z.ZodOptional<z.ZodBoolean>;
52
52
  ssl_key: z.ZodOptional<z.ZodString>;
53
53
  ssl_cert: z.ZodOptional<z.ZodString>;
54
- template: z.ZodOptional<z.ZodString>;
55
54
  }, z.core.$loose>>;
56
55
  }, z.core.$loose>;
57
56
  export interface Config extends z.infer<typeof ConfigSchema> {
58
57
  }
59
58
  export declare const configFiles: Map<string, File>;
60
59
  export declare function plainConfig(): Omit<DeepRequired<Config>, keyof typeof configShortcuts>;
60
+ export declare const defaultConfig: DeepRequired<Config>;
61
61
  declare const configShortcuts: {
62
62
  findPath: typeof findConfigPaths;
63
63
  load: typeof loadConfig;
@@ -67,12 +67,14 @@ declare const configShortcuts: {
67
67
  saveTo: typeof saveConfigTo;
68
68
  set: typeof setConfig;
69
69
  files: Map<string, File>;
70
+ defaults: DeepRequired<Config>;
70
71
  };
71
72
  export declare const config: DeepRequired<Config> & typeof configShortcuts;
72
73
  export default config;
73
74
  export declare const FileSchema: z.ZodObject<{
74
75
  include: z.ZodOptional<z.ZodArray<z.ZodString>>;
75
76
  plugins: z.ZodOptional<z.ZodArray<z.ZodString>>;
77
+ admin_api: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
76
78
  allow_new_users: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
77
79
  apps: z.ZodOptional<z.ZodOptional<z.ZodObject<{
78
80
  disabled: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -80,8 +82,8 @@ export declare const FileSchema: z.ZodObject<{
80
82
  audit: z.ZodOptional<z.ZodOptional<z.ZodObject<{
81
83
  allow_raw: z.ZodOptional<z.ZodBoolean>;
82
84
  retention: z.ZodOptional<z.ZodNumber>;
83
- min_severity: z.ZodOptional<z.ZodLiteral<"error" | "debug" | "Error" | "notice" | "info" | "warning" | "Emergency" | "Alert" | "Critical" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical">>;
84
- auto_suspend: z.ZodOptional<z.ZodLiteral<"error" | "debug" | "Error" | "notice" | "info" | "warning" | "Emergency" | "Alert" | "Critical" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical">>;
85
+ min_severity: z.ZodOptional<z.ZodLiteral<"Emergency" | "Alert" | "Critical" | "Error" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical" | "error" | "warning" | "notice" | "info" | "debug">>;
86
+ auto_suspend: z.ZodOptional<z.ZodLiteral<"Emergency" | "Alert" | "Critical" | "Error" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical" | "error" | "warning" | "notice" | "info" | "debug">>;
85
87
  }, z.core.$loose>>>;
86
88
  auth: z.ZodOptional<z.ZodOptional<z.ZodObject<{
87
89
  origin: z.ZodOptional<z.ZodString>;
@@ -105,17 +107,16 @@ export declare const FileSchema: z.ZodObject<{
105
107
  log: z.ZodOptional<z.ZodOptional<z.ZodObject<{
106
108
  level: z.ZodOptional<z.ZodEnum<{
107
109
  error: "error";
108
- debug: "debug";
109
- warn: "warn";
110
110
  notice: "notice";
111
111
  info: "info";
112
+ debug: "debug";
113
+ warn: "warn";
112
114
  }>>;
113
115
  console: z.ZodOptional<z.ZodBoolean>;
114
116
  }, z.core.$loose>>>;
117
+ request_size_limit: z.ZodOptional<z.ZodOptional<z.ZodOptional<z.ZodNumber>>>;
115
118
  show_duplicate_state: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
116
119
  web: z.ZodOptional<z.ZodOptional<z.ZodObject<{
117
- assets: z.ZodOptional<z.ZodString>;
118
- build: z.ZodOptional<z.ZodString>;
119
120
  disable_cache: z.ZodOptional<z.ZodBoolean>;
120
121
  port: z.ZodOptional<z.ZodNumber>;
121
122
  prefix: z.ZodOptional<z.ZodString>;
@@ -123,12 +124,11 @@ export declare const FileSchema: z.ZodObject<{
123
124
  secure: z.ZodOptional<z.ZodBoolean>;
124
125
  ssl_key: z.ZodOptional<z.ZodString>;
125
126
  ssl_cert: z.ZodOptional<z.ZodString>;
126
- template: z.ZodOptional<z.ZodString>;
127
127
  }, z.core.$loose>>>;
128
128
  }, z.core.$loose>;
129
129
  export interface File extends z.infer<typeof FileSchema> {
130
130
  }
131
- export declare function addConfigDefaults(other: Config, _target?: Record<string, any>): void;
131
+ export declare function addConfigDefaults(other: Config, _target?: Record<string, any>, _noDefault?: boolean): void;
132
132
  /**
133
133
  * Update the current config
134
134
  */
@@ -142,16 +142,26 @@ export interface LoadOptions {
142
142
  * If enabled, the config file will be skipped if it does not exist.
143
143
  */
144
144
  optional?: boolean;
145
+ /**
146
+ * If enabled, code from plugins will not be executed.
147
+ */
148
+ safe?: boolean;
145
149
  /**
146
150
  * If `optional`, this function will be called with the error if the config file is invalid or can't be read.
147
151
  */
148
152
  onError?(error: Error): void;
153
+ /**
154
+ * Used to mark included files
155
+ * @internal
156
+ */
157
+ _markIncluded?: boolean;
149
158
  }
150
159
  /**
151
160
  * Load the config from the provided path
152
161
  */
153
162
  export declare function loadConfig(path: string, options?: LoadOptions): Promise<void>;
154
- export declare function loadDefaultConfigs(): Promise<void>;
163
+ export declare function loadDefaultConfigs(safe?: boolean): Promise<void>;
164
+ export declare function reloadConfigs(safe?: boolean): Promise<void>;
155
165
  /**
156
166
  * Update the current config and write the updated config to the appropriate file
157
167
  */
package/dist/config.js CHANGED
@@ -1,15 +1,18 @@
1
+ import * as io from '@axium/core/node/io';
2
+ import { loadPlugin } from '@axium/core/node/plugins';
1
3
  import { levelText } from 'logzen';
2
4
  import { existsSync, readFileSync, writeFileSync } from 'node:fs';
3
5
  import { dirname, join, resolve } from 'node:path/posix';
4
6
  import { capitalize, deepAssign, omit } from 'utilium';
5
7
  import * as z from 'zod';
6
- import { _setDebugOutput, dirs, logger, output } from './io.js';
7
- import { loadPlugin } from './plugins.js';
8
+ import { dirs, logger, systemDir } from './io.js';
8
9
  import { _duplicateStateWarnings, _unique } from './state.js';
9
10
  const audit_severity_levels = ['emergency', 'alert', 'critical', 'error', 'warning', 'notice', 'info', 'debug'];
10
11
  const z_audit_severity = z.literal([...audit_severity_levels, ...audit_severity_levels.map(capitalize)]);
11
12
  export const ConfigSchema = z
12
13
  .looseObject({
14
+ /** Whether /api/admin is enabled */
15
+ admin_api: z.boolean(),
13
16
  allow_new_users: z.boolean(),
14
17
  apps: z
15
18
  .looseObject({
@@ -59,11 +62,10 @@ export const ConfigSchema = z
59
62
  console: z.boolean(),
60
63
  })
61
64
  .partial(),
65
+ request_size_limit: z.number().min(0).optional(),
62
66
  show_duplicate_state: z.boolean(),
63
67
  web: z
64
68
  .looseObject({
65
- assets: z.string(),
66
- build: z.string(),
67
69
  disable_cache: z.boolean(),
68
70
  port: z.number().min(1).max(65535),
69
71
  prefix: z.string(),
@@ -71,7 +73,6 @@ export const ConfigSchema = z
71
73
  secure: z.boolean(),
72
74
  ssl_key: z.string(),
73
75
  ssl_cert: z.string(),
74
- template: z.string(),
75
76
  })
76
77
  .partial(),
77
78
  })
@@ -80,18 +81,8 @@ export const configFiles = _unique('configFiles', new Map());
80
81
  export function plainConfig() {
81
82
  return omit(config, Object.keys(configShortcuts));
82
83
  }
83
- const configShortcuts = {
84
- findPath: findConfigPaths,
85
- load: loadConfig,
86
- loadDefaults: loadDefaultConfigs,
87
- plain: plainConfig,
88
- save: saveConfig,
89
- saveTo: saveConfigTo,
90
- set: setConfig,
91
- files: configFiles,
92
- };
93
- export const config = _unique('config', {
94
- ...configShortcuts,
84
+ export const defaultConfig = {
85
+ admin_api: true,
95
86
  allow_new_users: true,
96
87
  apps: {
97
88
  disabled: [],
@@ -131,9 +122,8 @@ export const config = _unique('config', {
131
122
  level: 'info',
132
123
  },
133
124
  show_duplicate_state: false,
125
+ request_size_limit: 0,
134
126
  web: {
135
- assets: '',
136
- build: '../build/handler.js',
137
127
  disable_cache: false,
138
128
  port: 443,
139
129
  prefix: '',
@@ -141,26 +131,42 @@ export const config = _unique('config', {
141
131
  secure: true,
142
132
  ssl_key: resolve(dirs[0], 'ssl_key.pem'),
143
133
  ssl_cert: resolve(dirs[0], 'ssl_cert.pem'),
144
- template: join(import.meta.dirname, '../web/template.html'),
145
134
  },
135
+ };
136
+ const configShortcuts = {
137
+ findPath: findConfigPaths,
138
+ load: loadConfig,
139
+ loadDefaults: loadDefaultConfigs,
140
+ plain: plainConfig,
141
+ save: saveConfig,
142
+ saveTo: saveConfigTo,
143
+ set: setConfig,
144
+ files: configFiles,
145
+ defaults: defaultConfig,
146
+ };
147
+ export const config = _unique('config', {
148
+ ...configShortcuts,
149
+ ...defaultConfig,
146
150
  });
147
151
  export default config;
148
152
  // config from file
149
153
  export const FileSchema = z
150
154
  .looseObject({
151
155
  ...ConfigSchema.shape,
152
- include: z.array(z.string()),
153
- plugins: z.array(z.string()),
156
+ include: z.string().array(),
157
+ plugins: z.string().array(),
154
158
  })
155
159
  .partial();
156
- export function addConfigDefaults(other, _target = config) {
160
+ export function addConfigDefaults(other, _target = config, _noDefault = false) {
161
+ if (!_noDefault)
162
+ deepAssign(defaultConfig, other);
157
163
  for (const [key, value] of Object.entries(other)) {
158
164
  if (!(key in _target) || _target[key] === null || _target[key] === undefined || Number.isNaN(_target[key])) {
159
165
  _target[key] = value;
160
166
  continue;
161
167
  }
162
168
  if (typeof value == 'object' && value != null && typeof _target[key] == 'object') {
163
- addConfigDefaults(value, _target[key]);
169
+ addConfigDefaults(value, _target[key], true);
164
170
  }
165
171
  }
166
172
  }
@@ -169,12 +175,13 @@ export function addConfigDefaults(other, _target = config) {
169
175
  */
170
176
  export function setConfig(other) {
171
177
  deepAssign(config, other);
172
- logger.detach(output);
178
+ logger.detach(io);
173
179
  if (config.log.console)
174
- logger.attach(output, { output: config.log.level });
175
- _setDebugOutput(config.debug);
180
+ logger.attach(io, { output: config.log.level });
181
+ io._setDebugOutput(config.debug);
176
182
  _duplicateStateWarnings(config.show_duplicate_state);
177
183
  }
184
+ const kWasIncluded = Symbol.for('_wasIncluded');
178
185
  /**
179
186
  * Load the config from the provided path
180
187
  */
@@ -186,9 +193,20 @@ export async function loadConfig(path, options = {}) {
186
193
  json = JSON.parse(readFileSync(path, 'utf8'));
187
194
  }
188
195
  catch (e) {
196
+ if (path == join(systemDir, 'config.json') && 'code' in e && e.code === 'ENOENT') {
197
+ try {
198
+ writeFileSync(path, '{}');
199
+ }
200
+ catch {
201
+ io.warn('Failed to create the main configuration file (/etc/axium/config.json): ' + e.message);
202
+ return;
203
+ }
204
+ io.debug('Created main configuration file (fresh install?)');
205
+ return;
206
+ }
189
207
  if (!options.optional)
190
208
  throw e;
191
- output.debug(`Skipping config at ${path} (${e.message})`);
209
+ io.debug(`Skipping config at ${path} (${e.message})`);
192
210
  return;
193
211
  }
194
212
  let file;
@@ -198,18 +216,18 @@ export async function loadConfig(path, options = {}) {
198
216
  catch (e) {
199
217
  if (!options.loose)
200
218
  throw e;
201
- output.debug(`Loading invalid config from ${path} (${e.message})`);
219
+ io.debug(`Loading invalid config from ${path} (${e.message})`);
202
220
  file = json;
203
221
  }
204
- configFiles.set(path, file);
222
+ configFiles.set(path, { ...file, [kWasIncluded]: !!options._markIncluded });
205
223
  setConfig(file);
206
- output.debug('Loaded config: ' + path);
224
+ io.debug('Loaded config: ' + path);
207
225
  for (const include of file.include ?? [])
208
- await loadConfig(resolve(dirname(path), include), { optional: true });
226
+ await loadConfig(resolve(dirname(path), include), { ...options, optional: true, _markIncluded: true });
209
227
  for (const plugin of file.plugins ?? [])
210
- await loadPlugin(plugin.startsWith('.') ? resolve(dirname(path), plugin) : plugin);
228
+ await loadPlugin('server', plugin, path, options.safe);
211
229
  }
212
- export async function loadDefaultConfigs() {
230
+ export async function loadDefaultConfigs(safe = false) {
213
231
  for (const path of findConfigPaths()) {
214
232
  if (!existsSync(path)) {
215
233
  try {
@@ -219,9 +237,20 @@ export async function loadDefaultConfigs() {
219
237
  continue;
220
238
  }
221
239
  }
222
- await loadConfig(path, { optional: true });
240
+ await loadConfig(path, { optional: true, safe });
223
241
  }
224
242
  }
243
+ export async function reloadConfigs(safe = false) {
244
+ const paths = Array.from(configFiles
245
+ .entries()
246
+ .filter(([, cfg]) => !cfg[kWasIncluded])
247
+ .map(([p]) => p));
248
+ configFiles.clear();
249
+ setConfig(defaultConfig);
250
+ for (const path of paths)
251
+ await loadConfig(path, { safe });
252
+ io.info('Reloaded configuration files');
253
+ }
225
254
  /**
226
255
  * Update the current config and write the updated config to the appropriate file
227
256
  */
@@ -235,7 +264,7 @@ export function saveConfigTo(path, changed) {
235
264
  setConfig(changed);
236
265
  const config = configFiles.get(path) ?? {};
237
266
  Object.assign(config, { ...changed, db: { ...config.db, ...changed.db } });
238
- output.debug(`Wrote config to ${path}`);
267
+ io.debug(`Wrote config to ${path}`);
239
268
  writeFileSync(path, JSON.stringify(config));
240
269
  }
241
270
  /**
@@ -1,9 +1,8 @@
1
- import type { Permission, Preferences } from '@axium/core';
1
+ import type { Permission, Preferences, Severity, UserInternal } from '@axium/core';
2
2
  import type { AuthenticatorTransportFuture, CredentialDeviceType } from '@simplewebauthn/server';
3
3
  import type * as kysely from 'kysely';
4
4
  import { Kysely } from 'kysely';
5
- import type { Severity } from './audit.js';
6
- import type { UserInternal, VerificationRole } from './auth.js';
5
+ import type { VerificationRole } from './auth.js';
7
6
  export interface DBAccessControl {
8
7
  itemId: string;
9
8
  userId: string;
@@ -43,7 +42,7 @@ export interface Schema {
43
42
  name: string | null;
44
43
  createdAt: kysely.GeneratedAlways<Date>;
45
44
  userId: string;
46
- publicKey: Uint8Array;
45
+ publicKey: Uint8Array<ArrayBuffer>;
47
46
  counter: number;
48
47
  deviceType: CredentialDeviceType;
49
48
  backedUp: boolean;
package/dist/database.js CHANGED
@@ -50,14 +50,15 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
50
50
  var e = new Error(message);
51
51
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
52
  });
53
+ import * as io from '@axium/core/node/io';
54
+ import { plugins } from '@axium/core/plugins';
53
55
  import { Kysely, PostgresDialect, sql } from 'kysely';
54
56
  import { jsonObjectFrom } from 'kysely/helpers/postgres';
55
57
  import { randomBytes } from 'node:crypto';
56
58
  import { readFileSync, writeFileSync } from 'node:fs';
57
59
  import pg from 'pg';
58
60
  import config from './config.js';
59
- import * as io from './io.js';
60
- import { plugins } from './plugins.js';
61
+ import { styleText } from 'node:util';
61
62
  const sym = Symbol.for('Axium:database');
62
63
  export let database;
63
64
  export function connect() {
@@ -277,11 +278,11 @@ export async function init(opt) {
277
278
  .catch(maybeCheck('audit_log'));
278
279
  io.start('Creating schema acl');
279
280
  await database.schema.createSchema('acl').execute().then(io.done).catch(warnExists);
280
- for (const plugin of plugins) {
281
- if (!plugin.hooks.db_init)
281
+ for (const plugin of plugins.values()) {
282
+ if (!plugin._hooks?.db_init)
282
283
  continue;
283
- io.plugin(plugin.name);
284
- await plugin.hooks.db_init(opt);
284
+ io.log(styleText('whiteBright', 'Running plugin: '), plugin.name);
285
+ await plugin._hooks?.db_init(opt);
285
286
  }
286
287
  }
287
288
  catch (e_1) {
@@ -432,22 +433,22 @@ export async function clean(opt) {
432
433
  await database.deleteFrom('sessions').where('sessions.expires', '<', now).execute().then(io.done);
433
434
  io.start('Removing expired verifications');
434
435
  await database.deleteFrom('verifications').where('verifications.expires', '<', now).execute().then(io.done);
435
- for (const plugin of plugins) {
436
- if (!plugin.hooks.clean)
436
+ for (const plugin of plugins.values()) {
437
+ if (!plugin._hooks?.clean)
437
438
  continue;
438
- io.plugin(plugin.name);
439
- await plugin.hooks.clean(opt);
439
+ io.log(styleText('whiteBright', 'Running plugin: '), plugin.name);
440
+ await plugin._hooks?.clean(opt);
440
441
  }
441
442
  }
442
443
  /**
443
444
  * Completely remove Axium from the database.
444
445
  */
445
446
  export async function uninstall(opt) {
446
- for (const plugin of plugins) {
447
- if (!plugin.hooks.remove)
447
+ for (const plugin of plugins.values()) {
448
+ if (!plugin._hooks?.remove)
448
449
  continue;
449
- io.plugin(plugin.name);
450
- await plugin.hooks.remove(opt);
450
+ io.log(styleText('whiteBright', 'Running plugin: '), plugin.name);
451
+ await plugin._hooks?.remove(opt);
451
452
  }
452
453
  await _sql('DROP DATABASE axium', 'Dropping database');
453
454
  await _sql('REVOKE ALL PRIVILEGES ON SCHEMA public FROM axium', 'Revoking schema privileges');
@@ -469,11 +470,11 @@ export async function uninstall(opt) {
469
470
  * Removes all data from tables.
470
471
  */
471
472
  export async function wipe(opt) {
472
- for (const plugin of plugins) {
473
- if (!plugin.hooks.db_wipe)
473
+ for (const plugin of plugins.values()) {
474
+ if (!plugin._hooks?.db_wipe)
474
475
  continue;
475
- io.plugin(plugin.name);
476
- await plugin.hooks.db_wipe(opt);
476
+ io.log(styleText('whiteBright', 'Running plugin: '), plugin.name);
477
+ await plugin._hooks?.db_wipe(opt);
477
478
  }
478
479
  for (const table of ['users', 'passkeys', 'sessions', 'verifications']) {
479
480
  io.start(`Wiping ${table}`);
@@ -0,0 +1,3 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ export declare function convertToRequest(req: IncomingMessage): Request;
3
+ export declare function convertFromResponse(res: ServerResponse, response: Response): Promise<void>;
@@ -0,0 +1,119 @@
1
+ import { config } from './config.js';
2
+ /* Credit to the SvelteKit team: https://github.com/sveltejs/kit/blob/8d1ba04825a540324bc003e85f36559a594aadc2/packages/kit/src/exports/node/index.js */
3
+ function get_raw_body(req) {
4
+ const h = req.headers;
5
+ if (!h['content-type'])
6
+ return null;
7
+ const content_length = Number(h['content-length']);
8
+ // check if no request body
9
+ if ((req.httpVersionMajor === 1 && isNaN(content_length) && h['transfer-encoding'] == null) || content_length === 0) {
10
+ return null;
11
+ }
12
+ let length = content_length;
13
+ if (config.request_size_limit) {
14
+ if (!length)
15
+ length = config.request_size_limit;
16
+ else if (length > config.request_size_limit)
17
+ throw 413;
18
+ }
19
+ if (req.destroyed) {
20
+ const readable = new ReadableStream();
21
+ void readable.cancel();
22
+ return readable;
23
+ }
24
+ let size = 0;
25
+ let cancelled = false;
26
+ return new ReadableStream({
27
+ start(controller) {
28
+ req.on('error', error => {
29
+ cancelled = true;
30
+ controller.error(error);
31
+ });
32
+ req.on('end', () => {
33
+ if (cancelled)
34
+ return;
35
+ controller.close();
36
+ });
37
+ req.on('data', chunk => {
38
+ if (cancelled)
39
+ return;
40
+ size += chunk.length;
41
+ if (size > length) {
42
+ cancelled = true;
43
+ controller.error(413);
44
+ return;
45
+ }
46
+ controller.enqueue(chunk);
47
+ if (controller.desiredSize === null || controller.desiredSize <= 0) {
48
+ req.pause();
49
+ }
50
+ });
51
+ },
52
+ pull() {
53
+ req.resume();
54
+ },
55
+ cancel(reason) {
56
+ cancelled = true;
57
+ req.destroy(reason);
58
+ },
59
+ });
60
+ }
61
+ export function convertToRequest(req) {
62
+ const headers = req.headers;
63
+ const request = new Request(config.auth.origin + req.url, {
64
+ // @ts-expect-error 2353
65
+ duplex: 'half',
66
+ method: req.method,
67
+ headers,
68
+ body: get_raw_body(req),
69
+ });
70
+ return request;
71
+ }
72
+ export async function convertFromResponse(res, response) {
73
+ res.writeHead(response.status, Object.fromEntries(response.headers));
74
+ if (!response.body) {
75
+ res.end();
76
+ return;
77
+ }
78
+ if (response.body.locked) {
79
+ res.write('Fatal error: Response body is locked. ' +
80
+ `This can happen when the response was already read (for example through 'response.json()' or 'response.text()').`);
81
+ res.end();
82
+ return;
83
+ }
84
+ const reader = response.body.getReader();
85
+ if (res.destroyed) {
86
+ await reader.cancel();
87
+ return;
88
+ }
89
+ const cancel = (error) => {
90
+ res.off('close', cancel);
91
+ res.off('error', cancel);
92
+ // If the reader has already been interrupted with an error earlier,
93
+ // then it will appear here, it is useless, but it needs to be catch.
94
+ reader.cancel(error).catch(() => { });
95
+ if (error)
96
+ res.destroy(error);
97
+ };
98
+ res.on('close', cancel);
99
+ res.on('error', cancel);
100
+ async function next() {
101
+ try {
102
+ for (;;) {
103
+ const { done, value } = await reader.read();
104
+ if (done)
105
+ break;
106
+ if (!res.write(value)) {
107
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
108
+ res.once('drain', next);
109
+ return;
110
+ }
111
+ }
112
+ res.end();
113
+ }
114
+ catch (error) {
115
+ cancel(error instanceof Error ? error : new Error(String(error)));
116
+ }
117
+ }
118
+ void next();
119
+ }
package/dist/io.d.ts CHANGED
@@ -2,45 +2,6 @@ import { Logger } from 'logzen';
2
2
  export declare const systemDir = "/etc/axium";
3
3
  export declare const dirs: string[];
4
4
  export declare const logger: Logger;
5
- /**
6
- * @internal
7
- */
8
- export declare const output: {
9
- constructor: {
10
- name: string;
11
- };
12
- error(message: string): void;
13
- warn(message: string): void;
14
- info(message: string): void;
15
- log(message: string): void;
16
- debug(message: string): void;
17
- };
18
- export declare function setCommandTimeout(value: number): void;
19
- /**
20
- * Run a system command with the fancy "Example... done."
21
- * @internal
22
- */
23
- export declare function run(message: string, command: string): Promise<string>;
24
- /** Yet another convenience function */
25
- export declare function exit(message: string | Error, code?: number): never;
26
- export declare function handleError(e: number | string | Error): void;
27
- export type OutputTag = 'debug' | 'info' | 'warn' | 'error' | 'start' | 'done' | 'plugin';
28
- export interface Output {
29
- (tag: 'done'): void;
30
- (tag: Exclude<OutputTag, 'done'>, message: string): void;
31
- }
32
- /**
33
- * Enable or disable debug output.
34
- */
35
- export declare function _setDebugOutput(enabled: boolean): void;
36
- export declare function useTaggedOutput(output: Output | null): void;
37
- export declare function done(): void;
38
- export declare function start(message: string): void;
39
- export declare function plugin(name: string): void;
40
- export declare function debug(message: string): void;
41
- export declare function info(message: string): void;
42
- export declare function warn(message: string): void;
43
- export declare function error(message: string): void;
44
5
  /** @internal */
45
6
  export declare const _portMethods: readonly ["node-cap"];
46
7
  /** @internal */
@@ -62,13 +23,3 @@ export interface PortOptions {
62
23
  * If the origin has a port, passkeys do not work correctly with some password managers.
63
24
  */
64
25
  export declare function restrictedPorts(opt: PortOptions): Promise<void>;
65
- /**
66
- * This is a factory for handling errors when performing operations.
67
- * The handler will allow the parent scope to continue if a relation already exists,
68
- * rather than fatally exiting.
69
- */
70
- export declare function someWarnings(...allowList: [RegExp, string?][]): (error: string | Error) => void;
71
- /**
72
- * Get a human-readable string for a date that also fits into CLIs well (fixed-width)
73
- */
74
- export declare function prettyDate(date: Date): string;