@axium/server 0.24.0 → 0.25.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/axiumd.service +1 -1
- 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/1taVrT-y.js +1 -0
- package/build/client/_app/immutable/chunks/1taVrT-y.js.br +0 -0
- package/build/client/_app/immutable/chunks/1taVrT-y.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BSFUgC2l.js +23 -0
- package/build/client/_app/immutable/chunks/BSFUgC2l.js.br +0 -0
- package/build/client/_app/immutable/chunks/BSFUgC2l.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bbzjahjl.js +2 -0
- package/build/client/_app/immutable/chunks/Bbzjahjl.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bbzjahjl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BxjargW5.js +1 -0
- package/build/client/_app/immutable/chunks/BxjargW5.js.br +0 -0
- package/build/client/_app/immutable/chunks/BxjargW5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C2ewTgu8.js +1 -0
- package/build/client/_app/immutable/chunks/C2ewTgu8.js.br +0 -0
- package/build/client/_app/immutable/chunks/C2ewTgu8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CFWAHLsq.js +1 -0
- package/build/client/_app/immutable/chunks/CFWAHLsq.js.br +0 -0
- package/build/client/_app/immutable/chunks/CFWAHLsq.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CPL43v-I.js +1 -0
- package/build/client/_app/immutable/chunks/CPL43v-I.js.br +0 -0
- package/build/client/_app/immutable/chunks/CPL43v-I.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CTKC36WM.js +1 -0
- package/build/client/_app/immutable/chunks/CTKC36WM.js.br +0 -0
- package/build/client/_app/immutable/chunks/CTKC36WM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CekH6JMP.js +1 -0
- package/build/client/_app/immutable/chunks/CekH6JMP.js.br +0 -0
- package/build/client/_app/immutable/chunks/CekH6JMP.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/CqfYW08-.js +1 -0
- package/build/client/_app/immutable/chunks/CqfYW08-.js.br +0 -0
- package/build/client/_app/immutable/chunks/CqfYW08-.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D1v6O410.js +1 -0
- package/build/client/_app/immutable/chunks/D1v6O410.js.br +0 -0
- package/build/client/_app/immutable/chunks/D1v6O410.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/DdnE6dyJ.js +2 -0
- package/build/client/_app/immutable/chunks/DdnE6dyJ.js.br +0 -0
- package/build/client/_app/immutable/chunks/DdnE6dyJ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DeieCYM0.js +22 -0
- package/build/client/_app/immutable/chunks/DeieCYM0.js.br +0 -0
- package/build/client/_app/immutable/chunks/DeieCYM0.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DfUzlYF5.js +1 -0
- package/build/client/_app/immutable/chunks/DfUzlYF5.js.br +0 -0
- package/build/client/_app/immutable/chunks/DfUzlYF5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dnk28BpG.js +1 -0
- package/build/client/_app/immutable/chunks/Dnk28BpG.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dnk28BpG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/KNAS5R2A.js +3 -0
- package/build/client/_app/immutable/chunks/KNAS5R2A.js.br +0 -0
- package/build/client/_app/immutable/chunks/KNAS5R2A.js.gz +0 -0
- package/build/client/_app/immutable/chunks/eyJgPND9.js +1 -0
- package/build/client/_app/immutable/chunks/eyJgPND9.js.br +1 -0
- package/build/client/_app/immutable/chunks/eyJgPND9.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CPF6A_DV.js +2 -0
- package/build/client/_app/immutable/entry/app.CPF6A_DV.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CPF6A_DV.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Dos_Ttds.js +1 -0
- package/build/client/_app/immutable/entry/start.Dos_Ttds.js.br +2 -0
- package/build/client/_app/immutable/entry/start.Dos_Ttds.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.DlE8ZTIF.js → 0.C5HgTRfT.js} +1 -1
- package/build/client/_app/immutable/nodes/0.C5HgTRfT.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.C5HgTRfT.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.CGcgSoA9.js +1 -0
- package/build/client/_app/immutable/nodes/1.CGcgSoA9.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.CGcgSoA9.js.gz +0 -0
- package/build/client/_app/immutable/nodes/10.ukScuXwz.js +1 -0
- package/build/client/_app/immutable/nodes/10.ukScuXwz.js.br +5 -0
- package/build/client/_app/immutable/nodes/10.ukScuXwz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/11.D3RDNx7M.js +1 -0
- package/build/client/_app/immutable/nodes/11.D3RDNx7M.js.br +0 -0
- package/build/client/_app/immutable/nodes/11.D3RDNx7M.js.gz +0 -0
- package/build/client/_app/immutable/nodes/12._vvpCcSG.js +1 -0
- package/build/client/_app/immutable/nodes/12._vvpCcSG.js.br +0 -0
- package/build/client/_app/immutable/nodes/12._vvpCcSG.js.gz +0 -0
- package/build/client/_app/immutable/nodes/13.BWPzZMQ5.js +1 -0
- package/build/client/_app/immutable/nodes/13.BWPzZMQ5.js.br +0 -0
- package/build/client/_app/immutable/nodes/13.BWPzZMQ5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/14.Cr843Lep.js +1 -0
- package/build/client/_app/immutable/nodes/14.Cr843Lep.js.br +0 -0
- package/build/client/_app/immutable/nodes/14.Cr843Lep.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.DUpwDjw8.js +1 -0
- package/build/client/_app/immutable/nodes/2.DUpwDjw8.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.DUpwDjw8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2.CvEpuMc7.js → 3.DPH7xl7M.js} +1 -1
- package/build/client/_app/immutable/nodes/3.DPH7xl7M.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DPH7xl7M.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.Bk0knTIK.js +1 -0
- package/build/client/_app/immutable/nodes/4.Bk0knTIK.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.Bk0knTIK.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.DwnZ1Bh8.js +1 -0
- package/build/client/_app/immutable/nodes/5.DwnZ1Bh8.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.DwnZ1Bh8.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.5U-KxFgt.js +2 -0
- package/build/client/_app/immutable/nodes/6.5U-KxFgt.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.5U-KxFgt.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.DFc4sJix.js +1 -0
- package/build/client/_app/immutable/nodes/7.DFc4sJix.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.DFc4sJix.js.gz +0 -0
- package/build/client/_app/immutable/nodes/8.BG4bv5P5.js +1 -0
- package/build/client/_app/immutable/nodes/8.BG4bv5P5.js.br +0 -0
- package/build/client/_app/immutable/nodes/8.BG4bv5P5.js.gz +0 -0
- package/build/client/_app/immutable/nodes/9.BKljyhOi.js +1 -0
- package/build/client/_app/immutable/nodes/9.BKljyhOi.js.br +0 -0
- package/build/client/_app/immutable/nodes/9.BKljyhOi.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 +7 -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-CZBaNtSI.js +9 -0
- package/build/server/chunks/{0-DgHTujtC.js.map → 0-CZBaNtSI.js.map} +1 -1
- package/build/server/chunks/1-D_3BtEbe.js +9 -0
- package/build/server/chunks/{1-k30i-hic.js.map → 1-D_3BtEbe.js.map} +1 -1
- package/build/server/chunks/10-CLkNMKHU.js +13 -0
- package/build/server/chunks/10-CLkNMKHU.js.map +1 -0
- package/build/server/chunks/11-5xPYR_1w.js +13 -0
- package/build/server/chunks/11-5xPYR_1w.js.map +1 -0
- package/build/server/chunks/12-N7UaQj7u.js +9 -0
- package/build/server/chunks/12-N7UaQj7u.js.map +1 -0
- package/build/server/chunks/13-QYVLpXli.js +9 -0
- package/build/server/chunks/13-QYVLpXli.js.map +1 -0
- package/build/server/chunks/14-CPY578rT.js +9 -0
- package/build/server/chunks/14-CPY578rT.js.map +1 -0
- package/build/server/chunks/2-_1jFrcvz.js +13 -0
- package/build/server/chunks/2-_1jFrcvz.js.map +1 -0
- package/build/server/chunks/3-B1CwnVF_.js +9 -0
- package/build/server/chunks/{2-CXlrhpR6.js.map → 3-B1CwnVF_.js.map} +1 -1
- package/build/server/chunks/4-CcxCcH4F.js +13 -0
- package/build/server/chunks/4-CcxCcH4F.js.map +1 -0
- package/build/server/chunks/5-CrlH6VoB.js +13 -0
- package/build/server/chunks/5-CrlH6VoB.js.map +1 -0
- package/build/server/chunks/6-FkP678Uz.js +13 -0
- package/build/server/chunks/6-FkP678Uz.js.map +1 -0
- package/build/server/chunks/7-B1iCe7VA.js +13 -0
- package/build/server/chunks/7-B1iCe7VA.js.map +1 -0
- package/build/server/chunks/8-p6n9G-P_.js +13 -0
- package/build/server/chunks/8-p6n9G-P_.js.map +1 -0
- package/build/server/chunks/9-fc3lKB7X.js +13 -0
- package/build/server/chunks/9-fc3lKB7X.js.map +1 -0
- package/build/server/chunks/Icon-CG7XnWX5.js +30 -0
- package/build/server/chunks/Icon-CG7XnWX5.js.map +1 -0
- package/build/server/chunks/Logout-BwzK1P29.js +45 -0
- package/build/server/chunks/Logout-BwzK1P29.js.map +1 -0
- package/build/server/chunks/_layout.svelte-9KMUotip.js +31 -0
- package/build/server/chunks/_layout.svelte-9KMUotip.js.map +1 -0
- package/build/server/chunks/_page.svelte-BD3HmLo_.js +28 -0
- package/build/server/chunks/_page.svelte-BD3HmLo_.js.map +1 -0
- package/build/server/chunks/_page.svelte-BFzPdJ6z.js +105 -0
- package/build/server/chunks/_page.svelte-BFzPdJ6z.js.map +1 -0
- package/build/server/chunks/_page.svelte-BIxxuzff.js +64 -0
- package/build/server/chunks/_page.svelte-BIxxuzff.js.map +1 -0
- package/build/server/chunks/_page.svelte-Bou2_u6i.js +13 -0
- package/build/server/chunks/_page.svelte-Bou2_u6i.js.map +1 -0
- package/build/server/chunks/_page.svelte-C25oQ2NT.js +80 -0
- package/build/server/chunks/_page.svelte-C25oQ2NT.js.map +1 -0
- package/build/server/chunks/_page.svelte-CAzWL4aq.js +66 -0
- package/build/server/chunks/_page.svelte-CAzWL4aq.js.map +1 -0
- package/build/server/chunks/_page.svelte-Ci5V-DhL.js +72 -0
- package/build/server/chunks/_page.svelte-Ci5V-DhL.js.map +1 -0
- package/build/server/chunks/_page.svelte-CnfRSJsl.js +37 -0
- package/build/server/chunks/_page.svelte-CnfRSJsl.js.map +1 -0
- package/build/server/chunks/_page.svelte-DgyZKeaF.js +231 -0
- package/build/server/chunks/_page.svelte-DgyZKeaF.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/_page.svelte-cAsZlwLs.js +24 -0
- package/build/server/chunks/_page.svelte-cAsZlwLs.js.map +1 -0
- package/build/server/chunks/_page.svelte-rrN2zFNa.js +66 -0
- package/build/server/chunks/_page.svelte-rrN2zFNa.js.map +1 -0
- package/build/server/chunks/account-BZSP6KBP.js +445 -0
- package/build/server/chunks/account-BZSP6KBP.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-DTrQqomO.js} +8 -7
- package/build/server/chunks/error.svelte-DTrQqomO.js.map +1 -0
- package/build/server/chunks/index-DJrm8BZm.js +844 -0
- package/build/server/chunks/index-DJrm8BZm.js.map +1 -0
- package/build/server/chunks/{index-CvHf_GW2.js → index-eKiDBuyI.js} +826 -438
- package/build/server/chunks/index-eKiDBuyI.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-Coq3Frtw.js} +102 -203
- package/build/server/chunks/user2-Coq3Frtw.js.map +1 -0
- package/build/server/chunks/{utils-h74ns7K6.js → utils-DlBYhQz7.js} +2 -1
- package/build/server/chunks/utils-DlBYhQz7.js.map +1 -0
- package/build/server/index.js +1787 -994
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +70 -13
- package/build/server/manifest.js.map +1 -1
- package/dist/acl.d.ts +1 -2
- package/dist/api/acl.js +4 -4
- package/dist/api/admin.d.ts +1 -0
- package/dist/api/admin.js +135 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +2 -0
- package/dist/api/metadata.js +3 -3
- 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 +48 -48
- package/dist/audit.d.ts +7 -39
- package/dist/audit.js +10 -13
- package/dist/auth.d.ts +4 -11
- package/dist/auth.js +4 -4
- package/dist/cli.js +40 -54
- package/dist/config.d.ts +24 -14
- package/dist/config.js +42 -25
- package/dist/database.d.ts +3 -4
- package/dist/database.js +12 -12
- package/dist/internal_requests.d.ts +3 -0
- package/dist/internal_requests.js +119 -0
- package/dist/io.d.ts +1 -1
- package/dist/io.js +2 -5
- package/dist/linking.d.ts +0 -1
- package/dist/linking.js +2 -5
- package/dist/plugins.d.ts +4 -39
- package/dist/plugins.js +35 -51
- package/dist/requests.d.ts +5 -5
- package/dist/requests.js +14 -14
- package/dist/routes.d.ts +6 -10
- package/dist/routes.js +4 -5
- package/dist/serve.d.ts +3 -2
- package/dist/serve.js +165 -13
- package/dist/state.js +2 -1
- package/package.json +6 -5
- package/routes/account/+page.svelte +5 -109
- package/routes/admin/+layout.svelte +56 -0
- package/routes/admin/+layout.ts +29 -0
- package/routes/admin/+page.svelte +39 -0
- package/routes/admin/+page.ts +7 -0
- package/routes/admin/audit/+page.svelte +137 -0
- package/routes/admin/audit/+page.ts +20 -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/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/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/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/NhZR8nmR.js +0 -3
- package/build/client/_app/immutable/chunks/NhZR8nmR.js.br +0 -0
- package/build/client/_app/immutable/chunks/NhZR8nmR.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.DJWgFLyv.js +0 -2
- package/build/client/_app/immutable/entry/app.DJWgFLyv.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DJWgFLyv.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CM7y0WAo.js +0 -1
- package/build/client/_app/immutable/entry/start.CM7y0WAo.js.br +0 -2
- package/build/client/_app/immutable/entry/start.CM7y0WAo.js.gz +0 -0
- 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.BER4lkmI.js +0 -1
- package/build/client/_app/immutable/nodes/1.BER4lkmI.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.BER4lkmI.js.gz +0 -0
- 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/1-k30i-hic.js +0 -9
- 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-BQqilaHv.js +0 -17301
- package/build/server/chunks/hooks.server-BQqilaHv.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/build/server/chunks/utils-h74ns7K6.js.map +0 -1
- package/dist/sveltekit.d.ts +0 -8
- package/dist/sveltekit.js +0 -60
- package/web/hooks.server.ts +0 -4
package/dist/audit.d.ts
CHANGED
|
@@ -1,35 +1,8 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { Severity, type AuditEvent, type AuditFilter } from '@axium/core/audit';
|
|
2
|
+
import type { Insertable, SelectQueryBuilder } from 'kysely';
|
|
2
3
|
import * as z from 'zod';
|
|
3
4
|
import { type Schema } from './database.js';
|
|
4
|
-
export declare enum Severity {
|
|
5
|
-
Emergency = 0,
|
|
6
|
-
Alert = 1,
|
|
7
|
-
Critical = 2,
|
|
8
|
-
Error = 3,
|
|
9
|
-
Warning = 4,
|
|
10
|
-
Notice = 5,
|
|
11
|
-
Info = 6,
|
|
12
|
-
Debug = 7
|
|
13
|
-
}
|
|
14
5
|
export declare function styleSeverity(sev: Severity, align?: boolean): string;
|
|
15
|
-
export interface AuditEvent<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
16
|
-
/** UUID of the event */
|
|
17
|
-
id: string;
|
|
18
|
-
/** UUID of the user that triggered the event. `null` for events triggered via the server CLI */
|
|
19
|
-
userId?: string | null;
|
|
20
|
-
/** When the event happened */
|
|
21
|
-
timestamp: Date;
|
|
22
|
-
/** How severe the event is */
|
|
23
|
-
severity: Severity;
|
|
24
|
-
/** Snake case name for the event */
|
|
25
|
-
name: string;
|
|
26
|
-
/** The source of the event. This should be a package name */
|
|
27
|
-
source: string;
|
|
28
|
-
/** Tags for the event. For example, `auth` for authentication events */
|
|
29
|
-
tags: string[];
|
|
30
|
-
/** Additional event specific data. */
|
|
31
|
-
extra: T;
|
|
32
|
-
}
|
|
33
6
|
export interface AuditEventInit extends Insertable<Schema['audit_log']> {
|
|
34
7
|
}
|
|
35
8
|
export declare function audit_raw(event: AuditEventInit): Promise<void>;
|
|
@@ -48,6 +21,10 @@ export interface $EventTypes {
|
|
|
48
21
|
admin_change: {
|
|
49
22
|
user: string;
|
|
50
23
|
};
|
|
24
|
+
admin_api: {
|
|
25
|
+
route: string;
|
|
26
|
+
session: string;
|
|
27
|
+
};
|
|
51
28
|
}
|
|
52
29
|
export type EventName = keyof $EventTypes;
|
|
53
30
|
export type EventExtra<T extends EventName> = $EventTypes[T];
|
|
@@ -71,13 +48,4 @@ export interface AuditEventConfig {
|
|
|
71
48
|
}
|
|
72
49
|
export declare function addEvent(init: AuditEventConfigInit): void;
|
|
73
50
|
export declare function audit<T extends EventName>(eventName: T, userId?: string, extra?: EventExtra<T>): Promise<void>;
|
|
74
|
-
export
|
|
75
|
-
since?: Date;
|
|
76
|
-
until?: Date;
|
|
77
|
-
user?: string | null;
|
|
78
|
-
severity?: Severity;
|
|
79
|
-
source?: string;
|
|
80
|
-
tags?: string[];
|
|
81
|
-
event?: string;
|
|
82
|
-
}
|
|
83
|
-
export declare function getEvents(filter: AuditFilter): Promise<AuditEvent[]>;
|
|
51
|
+
export declare function getEvents(filter: AuditFilter): SelectQueryBuilder<Schema, 'audit_log', AuditEvent>;
|
package/dist/audit.js
CHANGED
|
@@ -1,20 +1,10 @@
|
|
|
1
|
+
import { Severity } from '@axium/core/audit';
|
|
1
2
|
import { styleText } from 'node:util';
|
|
2
3
|
import { capitalize, omit } from 'utilium';
|
|
3
4
|
import * as z from 'zod';
|
|
4
5
|
import config from './config.js';
|
|
5
6
|
import { database } from './database.js';
|
|
6
7
|
import * as io from './io.js';
|
|
7
|
-
export var Severity;
|
|
8
|
-
(function (Severity) {
|
|
9
|
-
Severity[Severity["Emergency"] = 0] = "Emergency";
|
|
10
|
-
Severity[Severity["Alert"] = 1] = "Alert";
|
|
11
|
-
Severity[Severity["Critical"] = 2] = "Critical";
|
|
12
|
-
Severity[Severity["Error"] = 3] = "Error";
|
|
13
|
-
Severity[Severity["Warning"] = 4] = "Warning";
|
|
14
|
-
Severity[Severity["Notice"] = 5] = "Notice";
|
|
15
|
-
Severity[Severity["Info"] = 6] = "Info";
|
|
16
|
-
Severity[Severity["Debug"] = 7] = "Debug";
|
|
17
|
-
})(Severity || (Severity = {}));
|
|
18
8
|
const severityFormat = {
|
|
19
9
|
[Severity.Emergency]: ['bgRedBright', 'white', 'underline'],
|
|
20
10
|
[Severity.Alert]: ['bgRedBright', 'white'],
|
|
@@ -83,7 +73,7 @@ export async function audit(eventName, userId, extra) {
|
|
|
83
73
|
.catch(() => null);
|
|
84
74
|
}
|
|
85
75
|
}
|
|
86
|
-
export
|
|
76
|
+
export function getEvents(filter) {
|
|
87
77
|
let query = database.selectFrom('audit_log').selectAll();
|
|
88
78
|
if ('user' in filter && !filter.user)
|
|
89
79
|
query = query.where('userId', 'is', null);
|
|
@@ -101,7 +91,7 @@ export async function getEvents(filter) {
|
|
|
101
91
|
query = query.where('timestamp', '>=', filter.since);
|
|
102
92
|
if (filter.until)
|
|
103
93
|
query = query.where('timestamp', '<=', filter.until);
|
|
104
|
-
return
|
|
94
|
+
return query;
|
|
105
95
|
}
|
|
106
96
|
// Register built-ins
|
|
107
97
|
addEvent({ source: '@axium/server', name: 'user_created', severity: Severity.Info, tags: ['user'] });
|
|
@@ -123,3 +113,10 @@ addEvent({
|
|
|
123
113
|
extra: { item: z.string() },
|
|
124
114
|
noAutoSuspend: true,
|
|
125
115
|
});
|
|
116
|
+
addEvent({
|
|
117
|
+
source: '@axium/server',
|
|
118
|
+
name: 'admin_api',
|
|
119
|
+
severity: Severity.Debug,
|
|
120
|
+
tags: ['auth'],
|
|
121
|
+
extra: { route: z.string(), session: z.string() },
|
|
122
|
+
});
|
package/dist/auth.d.ts
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
import type { Passkey, Permission, Session,
|
|
1
|
+
import type { Passkey, Permission, Session, UserInternal, Verification } from '@axium/core';
|
|
2
2
|
import type { Insertable } from 'kysely';
|
|
3
3
|
import * as acl from './acl.js';
|
|
4
4
|
import { type Schema } from './database.js';
|
|
5
|
-
import type { RequestEvent } from './requests.js';
|
|
6
|
-
export interface UserInternal extends User {
|
|
7
|
-
isAdmin: boolean;
|
|
8
|
-
isSuspended: boolean;
|
|
9
|
-
/** Tags are internal, roles are public */
|
|
10
|
-
tags: string[];
|
|
11
|
-
}
|
|
12
5
|
export declare function getUser(id: string): Promise<UserInternal>;
|
|
13
6
|
export declare function updateUser({ id, ...user }: Insertable<Schema['users']>): Promise<UserInternal>;
|
|
14
7
|
export interface SessionInternal extends Session {
|
|
@@ -33,7 +26,7 @@ export interface VerificationInternal extends Verification {
|
|
|
33
26
|
export declare function createVerification(role: VerificationRole, userId: string, expires: number): Promise<VerificationInternal>;
|
|
34
27
|
export declare function useVerification(role: VerificationRole, userId: string, token: string): Promise<VerificationInternal | undefined>;
|
|
35
28
|
export interface PasskeyInternal extends Passkey {
|
|
36
|
-
publicKey: Uint8Array
|
|
29
|
+
publicKey: Uint8Array<ArrayBuffer>;
|
|
37
30
|
counter: number;
|
|
38
31
|
}
|
|
39
32
|
export declare function getPasskey(id: string): Promise<PasskeyInternal>;
|
|
@@ -44,11 +37,11 @@ export interface UserAuthResult extends SessionAndUser {
|
|
|
44
37
|
/** The user authenticating the request. */
|
|
45
38
|
accessor: UserInternal;
|
|
46
39
|
}
|
|
47
|
-
export declare function checkAuthForUser(
|
|
40
|
+
export declare function checkAuthForUser(request: Request, userId: string, sensitive?: boolean): Promise<UserAuthResult>;
|
|
48
41
|
export interface ItemAuthResult<T extends acl.Target> {
|
|
49
42
|
fromACL: boolean;
|
|
50
43
|
item: T;
|
|
51
44
|
user?: UserInternal;
|
|
52
45
|
session?: SessionInternal;
|
|
53
46
|
}
|
|
54
|
-
export declare function checkAuthForItem<const V extends acl.Target>(
|
|
47
|
+
export declare function checkAuthForItem<const V extends acl.Target>(request: Request, itemType: acl.TargetName, itemId: string, permission: Permission): Promise<ItemAuthResult<V>>;
|
package/dist/auth.js
CHANGED
|
@@ -87,8 +87,8 @@ export async function updatePasskeyCounter(id, newCounter) {
|
|
|
87
87
|
throw new Error('Passkey not found');
|
|
88
88
|
return passkey;
|
|
89
89
|
}
|
|
90
|
-
export async function checkAuthForUser(
|
|
91
|
-
const token = getToken(
|
|
90
|
+
export async function checkAuthForUser(request, userId, sensitive = false) {
|
|
91
|
+
const token = getToken(request, sensitive);
|
|
92
92
|
if (!token)
|
|
93
93
|
throw error(401, 'Missing token');
|
|
94
94
|
const session = await getSessionAndUser(token).catch(withError('Invalid or expired session', 401));
|
|
@@ -106,8 +106,8 @@ export async function checkAuthForUser(event, userId, sensitive = false) {
|
|
|
106
106
|
error(403, 'This token can not be used for sensitive actions');
|
|
107
107
|
return Object.assign(session, { accessor: session.user });
|
|
108
108
|
}
|
|
109
|
-
export async function checkAuthForItem(
|
|
110
|
-
const token = getToken(
|
|
109
|
+
export async function checkAuthForItem(request, itemType, itemId, permission) {
|
|
110
|
+
const token = getToken(request, false);
|
|
111
111
|
if (!token)
|
|
112
112
|
error(401, 'Missing token');
|
|
113
113
|
const session = await getSessionAndUser(token).catch(() => null);
|
package/dist/cli.js
CHANGED
|
@@ -51,24 +51,26 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
51
51
|
var e = new Error(message);
|
|
52
52
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
53
53
|
});
|
|
54
|
+
import { AuditFilter } from '@axium/core/audit';
|
|
55
|
+
import { severityNames } from '@axium/core/audit';
|
|
54
56
|
import { formatDateRange } from '@axium/core/format';
|
|
55
57
|
import { Argument, Option, program } from 'commander';
|
|
56
58
|
import { spawnSync } from 'node:child_process';
|
|
57
59
|
import { access } from 'node:fs/promises';
|
|
58
|
-
import { join } from 'node:path/posix';
|
|
60
|
+
import { join, resolve } from 'node:path/posix';
|
|
59
61
|
import { createInterface } from 'node:readline/promises';
|
|
60
62
|
import { styleText } from 'node:util';
|
|
61
|
-
import {
|
|
63
|
+
import { getByString, isJSON, setByString } from 'utilium';
|
|
62
64
|
import * as z from 'zod';
|
|
63
65
|
import $pkg from '../package.json' with { type: 'json' };
|
|
64
66
|
import { apps } from './apps.js';
|
|
65
|
-
import { audit, getEvents,
|
|
67
|
+
import { audit, getEvents, styleSeverity } from './audit.js';
|
|
66
68
|
import config, { configFiles, FileSchema, saveConfigTo } from './config.js';
|
|
67
69
|
import * as db from './database.js';
|
|
68
70
|
import * as io from './io.js';
|
|
69
71
|
import { linkRoutes, listRouteLinks, unlinkRoutes } from './linking.js';
|
|
70
|
-
import {
|
|
71
|
-
import {
|
|
72
|
+
import { plugins, pluginText } from './plugins.js';
|
|
73
|
+
import { serve } from './serve.js';
|
|
72
74
|
function readline() {
|
|
73
75
|
const rl = createInterface({
|
|
74
76
|
input: process.stdin,
|
|
@@ -82,19 +84,22 @@ function userText(user, bold = false) {
|
|
|
82
84
|
const text = `${user.name} <${user.email}> (${user.id})`;
|
|
83
85
|
return bold ? styleText('bold', text) : text;
|
|
84
86
|
}
|
|
87
|
+
let safe = false;
|
|
85
88
|
program
|
|
86
89
|
.version($pkg.version)
|
|
87
90
|
.name('axium')
|
|
88
91
|
.description('Axium server CLI')
|
|
89
92
|
.configureHelp({ showGlobalOptions: true })
|
|
93
|
+
.option('--safe', 'do not execute code from plugins')
|
|
90
94
|
.option('--debug', 'override debug mode')
|
|
91
95
|
.option('--no-debug', 'override debug mode')
|
|
92
96
|
.option('-c, --config <path>', 'path to the config file');
|
|
97
|
+
program.on('option:safe', () => (safe = true));
|
|
93
98
|
program.on('option:debug', () => config.set({ debug: true }));
|
|
94
|
-
program.on('option:config', () => void config.load(program.opts().config));
|
|
99
|
+
program.on('option:config', () => void config.load(program.opts().config, { safe }));
|
|
95
100
|
const noAutoDB = ['init', 'serve', 'check'];
|
|
96
101
|
program.hook('preAction', async function (_, action) {
|
|
97
|
-
await config.loadDefaults();
|
|
102
|
+
await config.loadDefaults(safe);
|
|
98
103
|
const opt = action.optsWithGlobals();
|
|
99
104
|
opt.force && io.output.warn('--force: Protections disabled.');
|
|
100
105
|
if (typeof opt.debug == 'boolean') {
|
|
@@ -275,24 +280,26 @@ axiumPlugin
|
|
|
275
280
|
return;
|
|
276
281
|
}
|
|
277
282
|
if (!opt.long) {
|
|
278
|
-
console.log(Array.from(plugins)
|
|
279
|
-
.map(plugin => plugin.name)
|
|
280
|
-
.join(', '));
|
|
283
|
+
console.log(Array.from(plugins.keys()).join(', '));
|
|
281
284
|
return;
|
|
282
285
|
}
|
|
283
286
|
console.log(styleText('whiteBright', plugins.size + ' plugin(s) loaded:'));
|
|
284
|
-
for (const plugin of plugins) {
|
|
287
|
+
for (const plugin of plugins.values()) {
|
|
285
288
|
console.log(plugin.name, opt.versions ? plugin.version : '');
|
|
286
289
|
}
|
|
287
290
|
});
|
|
291
|
+
function _findPlugin(search) {
|
|
292
|
+
const plugin = plugins.get(search) ?? plugins.values().find(p => p.specifier.toLowerCase() == search.toLowerCase());
|
|
293
|
+
if (!plugin)
|
|
294
|
+
io.exit(`Can't find a plugin matching "${search}"`);
|
|
295
|
+
return plugin;
|
|
296
|
+
}
|
|
288
297
|
axiumPlugin
|
|
289
298
|
.command('info')
|
|
290
299
|
.description('Get information about a plugin')
|
|
291
300
|
.argument('<plugin>', 'the plugin to get information about')
|
|
292
301
|
.action((search) => {
|
|
293
|
-
const plugin =
|
|
294
|
-
if (!plugin)
|
|
295
|
-
io.exit(`Can't find a plugin matching "${search}"`);
|
|
302
|
+
const plugin = _findPlugin(search);
|
|
296
303
|
console.log(pluginText(plugin));
|
|
297
304
|
});
|
|
298
305
|
axiumPlugin
|
|
@@ -301,18 +308,15 @@ axiumPlugin
|
|
|
301
308
|
.description('Remove a plugin')
|
|
302
309
|
.argument('<plugin>', 'the plugin to remove')
|
|
303
310
|
.action(async (search, opt) => {
|
|
304
|
-
const plugin =
|
|
305
|
-
|
|
306
|
-
io.exit(`Can't find a plugin matching "${search}"`);
|
|
307
|
-
const specifier = getSpecifier(plugin);
|
|
308
|
-
await plugin.hooks.remove?.(opt);
|
|
311
|
+
const plugin = _findPlugin(search);
|
|
312
|
+
await plugin._hooks?.remove?.(opt);
|
|
309
313
|
for (const [path, data] of configFiles) {
|
|
310
314
|
if (!data.plugins)
|
|
311
315
|
continue;
|
|
312
|
-
data.plugins = data.plugins.filter(p => p !== specifier);
|
|
316
|
+
data.plugins = data.plugins.filter(p => p !== plugin.specifier);
|
|
313
317
|
saveConfigTo(path, data);
|
|
314
318
|
}
|
|
315
|
-
plugins.delete(plugin);
|
|
319
|
+
plugins.delete(plugin.name);
|
|
316
320
|
});
|
|
317
321
|
axiumPlugin
|
|
318
322
|
.command('init')
|
|
@@ -325,11 +329,11 @@ axiumPlugin
|
|
|
325
329
|
.action(async (search, opt) => {
|
|
326
330
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
327
331
|
try {
|
|
328
|
-
const plugin =
|
|
332
|
+
const plugin = _findPlugin(search);
|
|
329
333
|
if (!plugin)
|
|
330
334
|
io.exit(`Can't find a plugin matching "${search}"`);
|
|
331
335
|
const _ = __addDisposableResource(env_1, db.connect(), true);
|
|
332
|
-
await plugin.
|
|
336
|
+
await plugin._hooks?.db_init?.({ force: false, ...opt, skip: true });
|
|
333
337
|
}
|
|
334
338
|
catch (e_1) {
|
|
335
339
|
env_1.error = e_1;
|
|
@@ -539,13 +543,11 @@ program
|
|
|
539
543
|
catch {
|
|
540
544
|
console.log(styleText('red', 'Unavailable'));
|
|
541
545
|
}
|
|
542
|
-
console.log(styleText('whiteBright', 'Loaded plugins:'), styleText(['dim', 'bold'], `(${plugins.size || 'none'})`), Array.from(plugins)
|
|
543
|
-
|
|
544
|
-
.
|
|
545
|
-
for (const plugin of plugins) {
|
|
546
|
-
if (!plugin.statusText)
|
|
546
|
+
console.log(styleText('whiteBright', 'Loaded plugins:'), styleText(['dim', 'bold'], `(${plugins.size || 'none'})`), Array.from(plugins.keys()).join(', '));
|
|
547
|
+
for (const plugin of plugins.values()) {
|
|
548
|
+
if (!plugin._hooks?.statusText)
|
|
547
549
|
continue;
|
|
548
|
-
const text = await plugin.statusText();
|
|
550
|
+
const text = await plugin._hooks?.statusText();
|
|
549
551
|
console.log(styleText('bold', plugin.name), plugin.version + ':', text.includes('\n') ? '\n' + text : text);
|
|
550
552
|
}
|
|
551
553
|
});
|
|
@@ -568,20 +570,19 @@ program
|
|
|
568
570
|
.action(async (opt) => {
|
|
569
571
|
await db.init({ ...opt, skip: opt.dbSkip }).catch(io.handleError);
|
|
570
572
|
await io.restrictedPorts({ method: 'node-cap', action: 'enable' }).catch(io.handleError);
|
|
571
|
-
linkRoutes(opt);
|
|
572
573
|
});
|
|
573
574
|
program
|
|
574
575
|
.command('serve')
|
|
575
576
|
.description('Start the Axium server')
|
|
576
577
|
.option('-p, --port <port>', 'the port to listen on')
|
|
577
578
|
.option('--ssl <prefix>', 'the prefix for the cert.pem and key.pem SSL files')
|
|
578
|
-
.option('-
|
|
579
|
+
.option('-b, --build <path>', 'the path to the handler build')
|
|
579
580
|
.action(async (opt) => {
|
|
580
|
-
const server = await
|
|
581
|
+
const server = await serve({
|
|
581
582
|
secure: opt.ssl ? true : config.web.secure,
|
|
582
583
|
ssl_cert: opt.ssl ? join(opt.ssl, 'cert.pem') : config.web.ssl_cert,
|
|
583
584
|
ssl_key: opt.ssl ? join(opt.ssl, 'key.pem') : config.web.ssl_key,
|
|
584
|
-
build: opt.build
|
|
585
|
+
build: opt.build ? resolve(opt.build) : undefined,
|
|
585
586
|
});
|
|
586
587
|
const port = !Number.isNaN(Number.parseInt(opt.port ?? '')) ? Number.parseInt(opt.port) : config.web.port;
|
|
587
588
|
server.listen(port, () => {
|
|
@@ -622,31 +623,16 @@ program
|
|
|
622
623
|
.option('-t, --include-tags', 'Include tags when listing events')
|
|
623
624
|
.addOption(new Option('-s, --summary', 'Summarize audit log entries instead of displaying individual ones').conflicts(['extra', 'includeTags']))
|
|
624
625
|
.optionsGroup('Filters:')
|
|
625
|
-
.
|
|
626
|
-
.
|
|
627
|
-
.
|
|
628
|
-
|
|
629
|
-
return z.union([z.uuid(), z.literal(['null', '']).transform(() => null)]).parse(v);
|
|
630
|
-
}
|
|
631
|
-
catch (e) {
|
|
632
|
-
throw z.prettifyError(e);
|
|
633
|
-
}
|
|
634
|
-
}))
|
|
635
|
-
.addOption(new Option('--severity <level>', 'Filter for events at or above a severity level')
|
|
636
|
-
.choices(Object.keys(Severity)
|
|
637
|
-
.filter(k => isNaN(Number(k)))
|
|
638
|
-
.map(uncapitalize))
|
|
639
|
-
.argParser(v => {
|
|
640
|
-
const cap = capitalize(v);
|
|
641
|
-
if (!(cap in Severity))
|
|
642
|
-
throw new Error('Invalid severity: ' + v);
|
|
643
|
-
return Severity[cap];
|
|
644
|
-
}))
|
|
626
|
+
.option('--since <date>', 'Filter for events since a date')
|
|
627
|
+
.option('--until <date>', 'Filter for events until a date')
|
|
628
|
+
.option('--user <uuid|null>', 'Filter for events triggered by a user')
|
|
629
|
+
.addOption(new Option('--severity <level>', 'Filter for events at or above a severity level').choices(severityNames))
|
|
645
630
|
.option('--source <source>', 'Filter by source')
|
|
646
631
|
.option('--tag <tag...>', 'Filter by tag(s)')
|
|
647
632
|
.option('--event <event>', 'Filter by event name')
|
|
648
633
|
.action(async (opt) => {
|
|
649
|
-
const
|
|
634
|
+
const filter = await AuditFilter.parseAsync(opt).catch(e => io.exit('Invalid filter: ' + z.prettifyError(e)));
|
|
635
|
+
const events = await getEvents(filter).execute();
|
|
650
636
|
if (opt.summary) {
|
|
651
637
|
const groups = Object.groupBy(events, e => e.severity);
|
|
652
638
|
const maxGroupLength = Math.max(...Object.values(groups).map(g => g.length.toString().length), 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" | "
|
|
12
|
-
auto_suspend: z.ZodOptional<z.ZodLiteral<"error" | "debug" | "
|
|
12
|
+
min_severity: z.ZodOptional<z.ZodLiteral<"error" | "debug" | "Emergency" | "Alert" | "Critical" | "Error" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical" | "warning" | "notice" | "info">>;
|
|
13
|
+
auto_suspend: z.ZodOptional<z.ZodLiteral<"error" | "debug" | "Emergency" | "Alert" | "Critical" | "Error" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical" | "warning" | "notice" | "info">>;
|
|
13
14
|
}, z.core.$loose>>;
|
|
14
15
|
auth: z.ZodOptional<z.ZodObject<{
|
|
15
16
|
origin: z.ZodOptional<z.ZodString>;
|
|
@@ -34,16 +35,15 @@ export declare const ConfigSchema: z.ZodObject<{
|
|
|
34
35
|
level: z.ZodOptional<z.ZodEnum<{
|
|
35
36
|
error: "error";
|
|
36
37
|
debug: "debug";
|
|
37
|
-
warn: "warn";
|
|
38
38
|
notice: "notice";
|
|
39
39
|
info: "info";
|
|
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" | "
|
|
84
|
-
auto_suspend: z.ZodOptional<z.ZodLiteral<"error" | "debug" | "
|
|
85
|
+
min_severity: z.ZodOptional<z.ZodLiteral<"error" | "debug" | "Emergency" | "Alert" | "Critical" | "Error" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical" | "warning" | "notice" | "info">>;
|
|
86
|
+
auto_suspend: z.ZodOptional<z.ZodLiteral<"error" | "debug" | "Emergency" | "Alert" | "Critical" | "Error" | "Warning" | "Notice" | "Info" | "Debug" | "emergency" | "alert" | "critical" | "warning" | "notice" | "info">>;
|
|
85
87
|
}, z.core.$loose>>>;
|
|
86
88
|
auth: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
87
89
|
origin: z.ZodOptional<z.ZodString>;
|
|
@@ -106,16 +108,15 @@ export declare const FileSchema: z.ZodObject<{
|
|
|
106
108
|
level: z.ZodOptional<z.ZodEnum<{
|
|
107
109
|
error: "error";
|
|
108
110
|
debug: "debug";
|
|
109
|
-
warn: "warn";
|
|
110
111
|
notice: "notice";
|
|
111
112
|
info: "info";
|
|
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
|
*/
|