@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.
- package/build/client/_app/immutable/assets/account.dAAx7bby.css +1 -0
- package/build/client/_app/immutable/assets/account.dAAx7bby.css.br +0 -0
- package/build/client/_app/immutable/assets/account.dAAx7bby.css.gz +0 -0
- package/build/client/_app/immutable/assets/list.DVGH0BeP.css +1 -0
- package/build/client/_app/immutable/assets/list.DVGH0BeP.css.br +0 -0
- package/build/client/_app/immutable/assets/list.DVGH0BeP.css.gz +0 -0
- package/build/client/_app/immutable/assets/styles.D8SZ-PeY.css +1 -0
- package/build/client/_app/immutable/assets/styles.D8SZ-PeY.css.br +2 -0
- package/build/client/_app/immutable/assets/styles.D8SZ-PeY.css.gz +0 -0
- package/build/client/_app/immutable/chunks/46qGscyh.js +2 -0
- package/build/client/_app/immutable/chunks/46qGscyh.js.br +0 -0
- package/build/client/_app/immutable/chunks/46qGscyh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B2Vkpbkw.js +2 -0
- package/build/client/_app/immutable/chunks/B2Vkpbkw.js.br +0 -0
- package/build/client/_app/immutable/chunks/B2Vkpbkw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BKixenYx.js +1 -0
- package/build/client/_app/immutable/chunks/BKixenYx.js.br +0 -0
- package/build/client/_app/immutable/chunks/BKixenYx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BLtAtlP3.js +1 -0
- package/build/client/_app/immutable/chunks/BLtAtlP3.js.br +2 -0
- package/build/client/_app/immutable/chunks/BLtAtlP3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BNTlty5m.js +1 -0
- package/build/client/_app/immutable/chunks/BNTlty5m.js.br +0 -0
- package/build/client/_app/immutable/chunks/BNTlty5m.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Beh6Ec8J.js +1 -0
- package/build/client/_app/immutable/chunks/Beh6Ec8J.js.br +0 -0
- package/build/client/_app/immutable/chunks/Beh6Ec8J.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BrUe-Qen.js +1 -0
- package/build/client/_app/immutable/chunks/BrUe-Qen.js.br +0 -0
- package/build/client/_app/immutable/chunks/BrUe-Qen.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bs4cD_pX.js +1 -0
- package/build/client/_app/immutable/chunks/Bs4cD_pX.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bs4cD_pX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C62F-tXu.js +1 -0
- package/build/client/_app/immutable/chunks/C62F-tXu.js.br +1 -0
- package/build/client/_app/immutable/chunks/C62F-tXu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CUBtP2L9.js +23 -0
- package/build/client/_app/immutable/chunks/CUBtP2L9.js.br +0 -0
- package/build/client/_app/immutable/chunks/CUBtP2L9.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Ch16TNvP.js +1 -0
- package/build/client/_app/immutable/chunks/Ch16TNvP.js.br +0 -0
- package/build/client/_app/immutable/chunks/Ch16TNvP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CoYD6HNm.js +1 -0
- package/build/client/_app/immutable/chunks/CoYD6HNm.js.br +0 -0
- package/build/client/_app/immutable/chunks/CoYD6HNm.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D40Zn55h.js +1 -0
- package/build/client/_app/immutable/chunks/D40Zn55h.js.br +0 -0
- package/build/client/_app/immutable/chunks/D40Zn55h.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DW7-1esk.js +21 -0
- package/build/client/_app/immutable/chunks/DW7-1esk.js.br +0 -0
- package/build/client/_app/immutable/chunks/DW7-1esk.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DY4fWHx_.js +1 -0
- package/build/client/_app/immutable/chunks/DY4fWHx_.js.br +0 -0
- package/build/client/_app/immutable/chunks/DY4fWHx_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DvOBbqVY.js +1 -0
- package/build/client/_app/immutable/chunks/DvOBbqVY.js.br +0 -0
- package/build/client/_app/immutable/chunks/DvOBbqVY.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DwZYWemd.js +1 -0
- package/build/client/_app/immutable/chunks/DwZYWemd.js.br +0 -0
- package/build/client/_app/immutable/chunks/DwZYWemd.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dy2Ho0cF.js +1 -0
- package/build/client/_app/immutable/chunks/Dy2Ho0cF.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dy2Ho0cF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/FTv0qR3w.js +1 -0
- package/build/client/_app/immutable/chunks/FTv0qR3w.js.br +0 -0
- package/build/client/_app/immutable/chunks/FTv0qR3w.js.gz +0 -0
- package/build/client/_app/immutable/chunks/NeK0YGoY.js +1 -0
- package/build/client/_app/immutable/chunks/NeK0YGoY.js.br +0 -0
- package/build/client/_app/immutable/chunks/NeK0YGoY.js.gz +0 -0
- package/build/client/_app/immutable/chunks/aArGsq9c.js +1 -0
- package/build/client/_app/immutable/chunks/aArGsq9c.js.br +0 -0
- package/build/client/_app/immutable/chunks/aArGsq9c.js.gz +0 -0
- package/build/client/_app/immutable/chunks/lH47zGKU.js +1 -0
- package/build/client/_app/immutable/chunks/lH47zGKU.js.br +0 -0
- package/build/client/_app/immutable/chunks/lH47zGKU.js.gz +0 -0
- package/build/client/_app/immutable/chunks/sMHjBQqw.js +1 -0
- package/build/client/_app/immutable/chunks/sMHjBQqw.js.br +0 -0
- package/build/client/_app/immutable/chunks/sMHjBQqw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/vQfHcJV6.js +2 -0
- package/build/client/_app/immutable/chunks/vQfHcJV6.js.br +0 -0
- package/build/client/_app/immutable/chunks/vQfHcJV6.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.pLVZKpSD.js +2 -0
- package/build/client/_app/immutable/entry/app.pLVZKpSD.js.br +0 -0
- package/build/client/_app/immutable/entry/app.pLVZKpSD.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CUaVsIrY.js +1 -0
- package/build/client/_app/immutable/entry/start.CUaVsIrY.js.br +2 -0
- package/build/client/_app/immutable/entry/start.CUaVsIrY.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D7hET-Bq.js +1 -0
- package/build/client/_app/immutable/nodes/0.D7hET-Bq.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D7hET-Bq.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.BWU-JJm_.js +1 -0
- package/build/client/_app/immutable/nodes/1.BWU-JJm_.js.br +2 -0
- package/build/client/_app/immutable/nodes/1.BWU-JJm_.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.C5N2XBee.js +1 -0
- package/build/client/_app/immutable/nodes/10.C5N2XBee.js.br +0 -0
- package/build/client/_app/immutable/nodes/10.C5N2XBee.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.CerbuSAv.js +1 -0
- package/build/client/_app/immutable/nodes/11.CerbuSAv.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.CerbuSAv.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12.Z4B9zS78.js +1 -0
- package/build/client/_app/immutable/nodes/12.Z4B9zS78.js.br +0 -0
- package/build/client/_app/immutable/nodes/12.Z4B9zS78.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.CuICShck.js +1 -0
- package/build/client/_app/immutable/nodes/13.CuICShck.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.CuICShck.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.BSEF5oaF.js +1 -0
- package/build/client/_app/immutable/nodes/14.BSEF5oaF.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.BSEF5oaF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/15.D1nsmo6j.js +1 -0
- package/build/client/_app/immutable/nodes/15.D1nsmo6j.js.br +0 -0
- package/build/client/_app/immutable/nodes/15.D1nsmo6j.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DQ1JcYgz.js +1 -0
- package/build/client/_app/immutable/nodes/2.DQ1JcYgz.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DQ1JcYgz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.BJp2JEtW.js +1 -0
- package/build/client/_app/immutable/nodes/3.BJp2JEtW.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.BJp2JEtW.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.Cvn_QsIx.js +1 -0
- package/build/client/_app/immutable/nodes/4.Cvn_QsIx.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.Cvn_QsIx.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DgPP9GX3.js +1 -0
- package/build/client/_app/immutable/nodes/5.DgPP9GX3.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DgPP9GX3.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.DKIzms8i.js +2 -0
- package/build/client/_app/immutable/nodes/6.DKIzms8i.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.DKIzms8i.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.3UigVXV4.js +1 -0
- package/build/client/_app/immutable/nodes/7.3UigVXV4.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.3UigVXV4.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.B8s2TdNQ.js +1 -0
- package/build/client/_app/immutable/nodes/8.B8s2TdNQ.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.B8s2TdNQ.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.LBMMe2kc.js +1 -0
- package/build/client/_app/immutable/nodes/9.LBMMe2kc.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.LBMMe2kc.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/styles.css +28 -0
- package/build/client/styles.css.br +0 -0
- package/build/client/styles.css.gz +0 -0
- package/build/handler.js +20 -3
- package/build/server/chunks/0-CNbALTKz.js +9 -0
- package/build/server/chunks/0-CNbALTKz.js.map +1 -0
- package/build/server/chunks/1-Dgxy393u.js +9 -0
- package/build/server/chunks/1-Dgxy393u.js.map +1 -0
- package/build/server/chunks/10-DovmbqKa.js +14 -0
- package/build/server/chunks/10-DovmbqKa.js.map +1 -0
- package/build/server/chunks/11-CRK_ubcl.js +14 -0
- package/build/server/chunks/11-CRK_ubcl.js.map +1 -0
- package/build/server/chunks/12-SbQlwMfe.js +9 -0
- package/build/server/chunks/12-SbQlwMfe.js.map +1 -0
- package/build/server/chunks/13-CbniIW7F.js +14 -0
- package/build/server/chunks/13-CbniIW7F.js.map +1 -0
- package/build/server/chunks/14-D9Vb_8Yx.js +9 -0
- package/build/server/chunks/14-D9Vb_8Yx.js.map +1 -0
- package/build/server/chunks/15-D-75Hdef.js +9 -0
- package/build/server/chunks/15-D-75Hdef.js.map +1 -0
- package/build/server/chunks/2-57exN8ae.js +14 -0
- package/build/server/chunks/2-57exN8ae.js.map +1 -0
- package/build/server/chunks/3-DNQft-pY.js +9 -0
- package/build/server/chunks/{2-CXlrhpR6.js.map → 3-DNQft-pY.js.map} +1 -1
- package/build/server/chunks/4-D9Bwp-f8.js +14 -0
- package/build/server/chunks/4-D9Bwp-f8.js.map +1 -0
- package/build/server/chunks/5-COEQwZNP.js +14 -0
- package/build/server/chunks/5-COEQwZNP.js.map +1 -0
- package/build/server/chunks/6-RT4yiDcP.js +14 -0
- package/build/server/chunks/6-RT4yiDcP.js.map +1 -0
- package/build/server/chunks/7-CVqF_r5D.js +14 -0
- package/build/server/chunks/7-CVqF_r5D.js.map +1 -0
- package/build/server/chunks/8-C5SO-sVH.js +14 -0
- package/build/server/chunks/8-C5SO-sVH.js.map +1 -0
- package/build/server/chunks/9-DoCOKtY-.js +14 -0
- package/build/server/chunks/9-DoCOKtY-.js.map +1 -0
- package/build/server/chunks/FormDialog-ZCY0chY1.js +102 -0
- package/build/server/chunks/FormDialog-ZCY0chY1.js.map +1 -0
- package/build/server/chunks/Icon-BVo9qbDf.js +30 -0
- package/build/server/chunks/Icon-BVo9qbDf.js.map +1 -0
- package/build/server/chunks/Logout-CmBZgu0j.js +46 -0
- package/build/server/chunks/Logout-CmBZgu0j.js.map +1 -0
- package/build/server/chunks/_layout.svelte-DuS006VZ.js +33 -0
- package/build/server/chunks/_layout.svelte-DuS006VZ.js.map +1 -0
- package/build/server/chunks/_page.svelte-BFVobcI7.js +14 -0
- package/build/server/chunks/_page.svelte-BFVobcI7.js.map +1 -0
- package/build/server/chunks/_page.svelte-B_cvhWJS.js +66 -0
- package/build/server/chunks/_page.svelte-B_cvhWJS.js.map +1 -0
- package/build/server/chunks/_page.svelte-BriaBR9l.js +28 -0
- package/build/server/chunks/_page.svelte-BriaBR9l.js.map +1 -0
- package/build/server/chunks/_page.svelte-BtQQzT7H.js +72 -0
- package/build/server/chunks/_page.svelte-BtQQzT7H.js.map +1 -0
- package/build/server/chunks/_page.svelte-C8D3c3yB.js +64 -0
- package/build/server/chunks/_page.svelte-C8D3c3yB.js.map +1 -0
- package/build/server/chunks/_page.svelte-CVSb9eHQ.js +24 -0
- package/build/server/chunks/_page.svelte-CVSb9eHQ.js.map +1 -0
- package/build/server/chunks/_page.svelte-CwRjZqL7.js +107 -0
- package/build/server/chunks/_page.svelte-CwRjZqL7.js.map +1 -0
- package/build/server/chunks/_page.svelte-D9A9RYjx.js +233 -0
- package/build/server/chunks/_page.svelte-D9A9RYjx.js.map +1 -0
- package/build/server/chunks/_page.svelte-DGhwqWMM.js +34 -0
- package/build/server/chunks/_page.svelte-DGhwqWMM.js.map +1 -0
- package/build/server/chunks/_page.svelte-DTvnX95_.js +75 -0
- package/build/server/chunks/_page.svelte-DTvnX95_.js.map +1 -0
- package/build/server/chunks/_page.svelte-DUfwpXfC.js +122 -0
- package/build/server/chunks/_page.svelte-DUfwpXfC.js.map +1 -0
- package/build/server/chunks/_page.svelte-DxDoD3rZ.js +37 -0
- package/build/server/chunks/_page.svelte-DxDoD3rZ.js.map +1 -0
- package/build/server/chunks/_page.svelte-VDBvShZ8.js +6 -0
- package/build/server/chunks/_page.svelte-VDBvShZ8.js.map +1 -0
- package/build/server/chunks/account-Bf_llRe2.js +446 -0
- package/build/server/chunks/account-Bf_llRe2.js.map +1 -0
- package/build/server/chunks/auth_redirect-olBYiIF2.js +24 -0
- package/build/server/chunks/auth_redirect-olBYiIF2.js.map +1 -0
- package/build/server/chunks/color-K_MR7m8s.js +14 -0
- package/build/server/chunks/color-K_MR7m8s.js.map +1 -0
- package/build/server/chunks/context-R2425nfV.js +64 -0
- package/build/server/chunks/context-R2425nfV.js.map +1 -0
- package/build/server/chunks/{error.svelte-DNQXZmIO.js → error.svelte-CkSCwrMJ.js} +7 -6
- package/build/server/chunks/error.svelte-CkSCwrMJ.js.map +1 -0
- package/build/server/chunks/index-CIEcmmdN.js +890 -0
- package/build/server/chunks/index-CIEcmmdN.js.map +1 -0
- package/build/server/chunks/{index-CvHf_GW2.js → index-Tt4zVDIZ.js} +843 -438
- package/build/server/chunks/index-Tt4zVDIZ.js.map +1 -0
- package/build/server/chunks/layout.svelte-UxsTmhKc.js +8 -0
- package/build/server/chunks/layout.svelte-UxsTmhKc.js.map +1 -0
- package/build/server/chunks/{string-DLbvtT1R.js → numbers-DL8C9q4W.js} +1 -71
- package/build/server/chunks/numbers-DL8C9q4W.js.map +1 -0
- package/build/server/chunks/{FormDialog-CB-2YGWi.js → user2-CRfK67II.js} +12 -206
- package/build/server/chunks/user2-CRfK67II.js.map +1 -0
- package/build/server/chunks/utils-h74ns7K6.js.map +1 -1
- package/build/server/index.js +2304 -1140
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +78 -13
- package/build/server/manifest.js.map +1 -1
- package/dist/acl.d.ts +1 -2
- package/dist/acl.js +1 -1
- package/dist/api/acl.js +4 -4
- package/dist/api/admin.d.ts +1 -0
- package/dist/api/admin.js +152 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +2 -0
- package/dist/api/metadata.js +5 -5
- package/dist/api/passkeys.js +10 -10
- package/dist/api/register.js +4 -4
- package/dist/api/session.js +5 -5
- package/dist/api/users.js +52 -49
- package/dist/audit.d.ts +8 -39
- package/dist/audit.js +13 -16
- package/dist/auth.d.ts +4 -11
- package/dist/auth.js +4 -4
- package/dist/cli.js +515 -559
- package/dist/config.d.ts +26 -16
- package/dist/config.js +65 -36
- package/dist/database.d.ts +3 -4
- package/dist/database.js +19 -18
- package/dist/internal_requests.d.ts +3 -0
- package/dist/internal_requests.js +119 -0
- package/dist/io.d.ts +0 -49
- package/dist/io.js +23 -171
- package/dist/linking.d.ts +0 -1
- package/dist/linking.js +5 -8
- package/dist/requests.d.ts +10 -6
- package/dist/requests.js +17 -15
- package/dist/routes.d.ts +6 -10
- package/dist/routes.js +7 -8
- package/dist/serve.d.ts +7 -2
- package/dist/serve.js +170 -13
- package/dist/state.js +2 -1
- package/package.json +8 -7
- package/routes/account/+page.svelte +5 -109
- package/routes/admin/+layout.svelte +56 -0
- package/routes/admin/+layout.ts +31 -0
- package/routes/admin/+page.svelte +39 -0
- package/routes/admin/+page.ts +7 -0
- package/routes/admin/audit/+page.svelte +158 -0
- package/routes/admin/audit/+page.ts +22 -0
- package/routes/admin/audit/[id]/+page.svelte +43 -0
- package/routes/admin/audit/[id]/+page.ts +9 -0
- package/routes/admin/audit/styles.css +31 -0
- package/routes/admin/config/+page.svelte +28 -0
- package/routes/admin/config/+page.ts +9 -0
- package/routes/admin/plugins/+page.svelte +23 -0
- package/routes/admin/plugins/+page.ts +7 -0
- package/routes/admin/users/+page.svelte +60 -0
- package/routes/admin/users/+page.ts +9 -0
- package/routes/admin/users/[id]/+page.svelte +108 -0
- package/routes/admin/users/[id]/+page.ts +17 -0
- package/routes/login/client/+page.svelte +72 -0
- package/routes/login/client/+page.ts +27 -0
- package/routes/tsconfig.json +1 -1
- package/svelte.config.js +4 -10
- package/{web/template.html → template.html} +1 -1
- package/{web/tsconfig.json → web.tsconfig.json} +2 -2
- package/build/client/_app/immutable/chunks/B1E1cVbi.js +0 -1
- package/build/client/_app/immutable/chunks/B1E1cVbi.js.br +0 -0
- package/build/client/_app/immutable/chunks/B1E1cVbi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CIywFg5g.js +0 -3
- package/build/client/_app/immutable/chunks/CIywFg5g.js.br +0 -0
- package/build/client/_app/immutable/chunks/CIywFg5g.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D3hk2v8y.js +0 -1
- package/build/client/_app/immutable/chunks/D3hk2v8y.js.br +0 -2
- package/build/client/_app/immutable/chunks/D3hk2v8y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D4Bce_hb.js +0 -1
- package/build/client/_app/immutable/chunks/D4Bce_hb.js.br +0 -0
- package/build/client/_app/immutable/chunks/D4Bce_hb.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D9TfJrfD.js +0 -1
- package/build/client/_app/immutable/chunks/D9TfJrfD.js.br +0 -0
- package/build/client/_app/immutable/chunks/D9TfJrfD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DJeR1n-B.js +0 -51
- package/build/client/_app/immutable/chunks/DJeR1n-B.js.br +0 -0
- package/build/client/_app/immutable/chunks/DJeR1n-B.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DsnmJJEf.js +0 -1
- package/build/client/_app/immutable/chunks/DsnmJJEf.js.br +0 -2
- package/build/client/_app/immutable/chunks/DsnmJJEf.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dy1O3iBu.js +0 -2
- package/build/client/_app/immutable/chunks/Dy1O3iBu.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dy1O3iBu.js.gz +0 -0
- package/build/client/_app/immutable/chunks/pba7IodQ.js +0 -1
- package/build/client/_app/immutable/chunks/pba7IodQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/pba7IodQ.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.ChtScU8h.js +0 -2
- package/build/client/_app/immutable/entry/app.ChtScU8h.js.br +0 -0
- package/build/client/_app/immutable/entry/app.ChtScU8h.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DdjgBKiR.js +0 -1
- package/build/client/_app/immutable/entry/start.DdjgBKiR.js.br +0 -2
- package/build/client/_app/immutable/entry/start.DdjgBKiR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.DlE8ZTIF.js +0 -1
- package/build/client/_app/immutable/nodes/0.DlE8ZTIF.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DlE8ZTIF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DRjfV_5C.js +0 -1
- package/build/client/_app/immutable/nodes/1.DRjfV_5C.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.DRjfV_5C.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CvEpuMc7.js +0 -1
- package/build/client/_app/immutable/nodes/2.CvEpuMc7.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CvEpuMc7.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.CVudd8x2.js +0 -7
- package/build/client/_app/immutable/nodes/3.CVudd8x2.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.CVudd8x2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js +0 -1
- package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.Dhj0R0r7.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CGoBaVII.js +0 -1
- package/build/client/_app/immutable/nodes/5.CGoBaVII.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CGoBaVII.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BtB2uWXy.js +0 -1
- package/build/client/_app/immutable/nodes/6.BtB2uWXy.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BtB2uWXy.js.gz +0 -0
- package/build/server/chunks/0-DgHTujtC.js +0 -9
- package/build/server/chunks/0-DgHTujtC.js.map +0 -1
- package/build/server/chunks/1-B3zVLOO8.js +0 -9
- package/build/server/chunks/1-B3zVLOO8.js.map +0 -1
- package/build/server/chunks/2-CXlrhpR6.js +0 -9
- package/build/server/chunks/3-CGT4Ugys.js +0 -13
- package/build/server/chunks/3-CGT4Ugys.js.map +0 -1
- package/build/server/chunks/4-BscEiwUk.js +0 -9
- package/build/server/chunks/4-BscEiwUk.js.map +0 -1
- package/build/server/chunks/5-H0ePIJBE.js +0 -9
- package/build/server/chunks/5-H0ePIJBE.js.map +0 -1
- package/build/server/chunks/6-BrPpcagX.js +0 -9
- package/build/server/chunks/6-BrPpcagX.js.map +0 -1
- package/build/server/chunks/FormDialog-CB-2YGWi.js.map +0 -1
- package/build/server/chunks/Logout-LKOt-AST.js +0 -45
- package/build/server/chunks/Logout-LKOt-AST.js.map +0 -1
- package/build/server/chunks/_page.svelte-B1LK5J87.js +0 -11
- package/build/server/chunks/_page.svelte-B1LK5J87.js.map +0 -1
- package/build/server/chunks/_page.svelte-CMtkwvbP.js +0 -68
- package/build/server/chunks/_page.svelte-CMtkwvbP.js.map +0 -1
- package/build/server/chunks/_page.svelte-CbI2KxeA.js +0 -62
- package/build/server/chunks/_page.svelte-CbI2KxeA.js.map +0 -1
- package/build/server/chunks/_page.svelte-D1_WJoyP.js +0 -6
- package/build/server/chunks/_page.svelte-D1_WJoyP.js.map +0 -1
- package/build/server/chunks/_page.svelte-d01Hl2Ia.js +0 -639
- package/build/server/chunks/_page.svelte-d01Hl2Ia.js.map +0 -1
- package/build/server/chunks/error.svelte-DNQXZmIO.js.map +0 -1
- package/build/server/chunks/hooks.server-CQhG9POo.js +0 -17298
- package/build/server/chunks/hooks.server-CQhG9POo.js.map +0 -1
- package/build/server/chunks/index-CvHf_GW2.js.map +0 -1
- package/build/server/chunks/index-RTKpMYZ1.js +0 -397
- package/build/server/chunks/index-RTKpMYZ1.js.map +0 -1
- package/build/server/chunks/layout.svelte-BSvrn-4a.js +0 -8
- package/build/server/chunks/layout.svelte-BSvrn-4a.js.map +0 -1
- package/build/server/chunks/string-DLbvtT1R.js.map +0 -1
- package/dist/apps.d.ts +0 -6
- package/dist/apps.js +0 -6
- package/dist/plugins.d.ts +0 -49
- package/dist/plugins.js +0 -80
- package/dist/sveltekit.d.ts +0 -8
- package/dist/sveltekit.js +0 -60
- package/web/hooks.server.ts +0 -4
- /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<"
|
|
12
|
-
auto_suspend: z.ZodOptional<z.ZodLiteral<"
|
|
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<"
|
|
84
|
-
auto_suspend: z.ZodOptional<z.ZodLiteral<"
|
|
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
|
|
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 {
|
|
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
|
|
84
|
-
|
|
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.
|
|
153
|
-
plugins: z.
|
|
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(
|
|
178
|
+
logger.detach(io);
|
|
173
179
|
if (config.log.console)
|
|
174
|
-
logger.attach(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
267
|
+
io.debug(`Wrote config to ${path}`);
|
|
239
268
|
writeFileSync(path, JSON.stringify(config));
|
|
240
269
|
}
|
|
241
270
|
/**
|
package/dist/database.d.ts
CHANGED
|
@@ -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 {
|
|
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
|
|
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.
|
|
281
|
+
for (const plugin of plugins.values()) {
|
|
282
|
+
if (!plugin._hooks?.db_init)
|
|
282
283
|
continue;
|
|
283
|
-
io.
|
|
284
|
-
await plugin.
|
|
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.
|
|
436
|
+
for (const plugin of plugins.values()) {
|
|
437
|
+
if (!plugin._hooks?.clean)
|
|
437
438
|
continue;
|
|
438
|
-
io.
|
|
439
|
-
await plugin.
|
|
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.
|
|
447
|
+
for (const plugin of plugins.values()) {
|
|
448
|
+
if (!plugin._hooks?.remove)
|
|
448
449
|
continue;
|
|
449
|
-
io.
|
|
450
|
-
await plugin.
|
|
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.
|
|
473
|
+
for (const plugin of plugins.values()) {
|
|
474
|
+
if (!plugin._hooks?.db_wipe)
|
|
474
475
|
continue;
|
|
475
|
-
io.
|
|
476
|
-
await plugin.
|
|
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,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;
|