@axium/server 0.18.6 → 0.19.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/chunks/BYEtX5Az.js +1 -0
- package/build/client/_app/immutable/chunks/BYEtX5Az.js.br +0 -0
- package/build/client/_app/immutable/chunks/BYEtX5Az.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cyzk4yeH.js +3 -0
- package/build/client/_app/immutable/chunks/Cyzk4yeH.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cyzk4yeH.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{B3bf7yrh.js → DCUM25og.js} +1 -1
- package/build/client/_app/immutable/chunks/DCUM25og.js.br +0 -0
- package/build/client/_app/immutable/chunks/{B3bf7yrh.js.gz → DCUM25og.js.gz} +0 -0
- package/build/client/_app/immutable/chunks/DY1x3fBx.js +1 -0
- package/build/client/_app/immutable/chunks/DY1x3fBx.js.br +0 -0
- package/build/client/_app/immutable/chunks/DY1x3fBx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{B4IjTTLF.js → DYZBB-Ix.js} +8 -8
- package/build/client/_app/immutable/chunks/DYZBB-Ix.js.br +0 -0
- package/build/client/_app/immutable/chunks/DYZBB-Ix.js.gz +0 -0
- package/build/client/_app/immutable/chunks/FWeOBoAM.js +1 -0
- package/build/client/_app/immutable/chunks/FWeOBoAM.js.br +0 -0
- package/build/client/_app/immutable/chunks/FWeOBoAM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/IgiyYk6u.js +1 -0
- package/build/client/_app/immutable/chunks/IgiyYk6u.js.br +0 -0
- package/build/client/_app/immutable/chunks/IgiyYk6u.js.gz +0 -0
- package/build/client/_app/immutable/chunks/p-F-zYzk.js +1 -0
- package/build/client/_app/immutable/chunks/p-F-zYzk.js.br +0 -0
- package/build/client/_app/immutable/chunks/p-F-zYzk.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.BOAQU4lu.js +2 -0
- package/build/client/_app/immutable/entry/app.BOAQU4lu.js.br +0 -0
- package/build/client/_app/immutable/entry/app.BOAQU4lu.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BcxVnXqP.js +1 -0
- package/build/client/_app/immutable/entry/start.BcxVnXqP.js.br +2 -0
- package/build/client/_app/immutable/entry/start.BcxVnXqP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.BbGefPez.js → 0.fU2Fkia3.js} +1 -1
- package/build/client/_app/immutable/nodes/0.fU2Fkia3.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.fU2Fkia3.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.ebxToP8U.js +1 -0
- package/build/client/_app/immutable/nodes/1.ebxToP8U.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.ebxToP8U.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{2._Jmh03he.js → 2.Cczp5_pl.js} +1 -1
- package/build/client/_app/immutable/nodes/2.Cczp5_pl.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Cczp5_pl.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.BwwptDiR.js +1 -0
- package/build/client/_app/immutable/nodes/3.BwwptDiR.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.BwwptDiR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DFZa97F0.js +1 -0
- package/build/client/_app/immutable/nodes/4.DFZa97F0.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DFZa97F0.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.CObFvODa.js +1 -0
- package/build/client/_app/immutable/nodes/5.CObFvODa.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.CObFvODa.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.ezb4muQm.js +1 -0
- package/build/client/_app/immutable/nodes/6.ezb4muQm.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.ezb4muQm.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/server/chunks/{0-CUfr8UwD.js → 0-BwO1RCtn.js} +2 -2
- package/build/server/chunks/{0-CUfr8UwD.js.map → 0-BwO1RCtn.js.map} +1 -1
- package/build/server/chunks/1-BtBlW1Zd.js +9 -0
- package/build/server/chunks/{1-DffE3_iJ.js.map → 1-BtBlW1Zd.js.map} +1 -1
- package/build/server/chunks/{2-c1bljkMr.js → 2-BwMXZ3uH.js} +2 -2
- package/build/server/chunks/{2-c1bljkMr.js.map → 2-BwMXZ3uH.js.map} +1 -1
- package/build/server/chunks/3-DZ3qU23G.js +9 -0
- package/build/server/chunks/3-DZ3qU23G.js.map +1 -0
- package/build/server/chunks/4-CiYhCg7w.js +9 -0
- package/build/server/chunks/4-CiYhCg7w.js.map +1 -0
- package/build/server/chunks/5-DeLLDZUB.js +9 -0
- package/build/server/chunks/5-DeLLDZUB.js.map +1 -0
- package/build/server/chunks/6-WSYEiBK_.js +9 -0
- package/build/server/chunks/6-WSYEiBK_.js.map +1 -0
- package/build/server/chunks/{Logout-CkwmxNTt.js → Logout-CXx10rDN.js} +4 -5
- package/build/server/chunks/Logout-CXx10rDN.js.map +1 -0
- package/build/server/chunks/_page.svelte-BBp1dML7.js +11 -0
- package/build/server/chunks/{_page.svelte-DPdvFuWg.js.map → _page.svelte-BBp1dML7.js.map} +1 -1
- package/build/server/chunks/{_page.svelte-CVJoQAAB.js → _page.svelte-C_AR-luT.js} +4 -5
- package/build/server/chunks/_page.svelte-C_AR-luT.js.map +1 -0
- package/build/server/chunks/{_page.svelte-whmO3TtB.js → _page.svelte-CrDbYLUc.js} +10 -365
- package/build/server/chunks/_page.svelte-CrDbYLUc.js.map +1 -0
- package/build/server/chunks/{_page.svelte-D3kXcWlK.js → _page.svelte-Ds-0vPQG.js} +4 -5
- package/build/server/chunks/_page.svelte-Ds-0vPQG.js.map +1 -0
- package/build/server/chunks/error.svelte-DkJRpKga.js +46 -0
- package/build/server/chunks/error.svelte-DkJRpKga.js.map +1 -0
- package/build/server/chunks/exports-Cc9yggiy.js +226 -0
- package/build/server/chunks/exports-Cc9yggiy.js.map +1 -0
- package/build/server/chunks/hooks.server-PyYsuy1-.js +1324 -0
- package/build/server/chunks/hooks.server-PyYsuy1-.js.map +1 -0
- package/build/server/chunks/{exports-DeY8o0ws.js → index-CBVFb-Fk.js} +2 -223
- package/build/server/chunks/index-CBVFb-Fk.js.map +1 -0
- package/build/server/chunks/{user-DW-tjDe0.js → schemas-C2VqNPFY.js} +129 -2079
- package/build/server/chunks/schemas-C2VqNPFY.js.map +1 -0
- package/build/server/chunks/string-CafUlmcI.js +355 -0
- package/build/server/chunks/string-CafUlmcI.js.map +1 -0
- package/build/server/chunks/user-B61vTdij.js +2078 -0
- package/build/server/chunks/user-B61vTdij.js.map +1 -0
- package/build/server/index.js +4 -3
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +8 -8
- package/build/server/manifest.js.map +1 -1
- package/dist/api/acl.js +2 -2
- package/dist/api/metadata.js +3 -4
- package/dist/api/passkeys.js +1 -2
- package/dist/api/register.js +9 -10
- package/dist/api/session.js +1 -2
- package/dist/api/users.js +11 -12
- package/dist/auth.d.ts +1 -1
- package/dist/auth.js +1 -2
- package/dist/cli.js +2 -2
- package/dist/config.d.ts +74 -70
- package/dist/config.js +62 -57
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/requests.d.ts +36 -2
- package/dist/requests.js +65 -7
- package/dist/routes.d.ts +1 -1
- package/dist/serve.d.ts +6 -1
- package/dist/serve.js +19 -1
- package/dist/sveltekit.d.ts +3 -3
- package/dist/sveltekit.js +11 -46
- package/package.json +1 -2
- package/routes/account/+page.svelte +4 -5
- package/svelte.config.js +1 -2
- package/web/hooks.server.ts +3 -17
- package/web/lib/FormDialog.svelte +4 -5
- package/web/lib/Logout.svelte +6 -2
- package/web/tsconfig.json +1 -1
- package/build/client/_app/immutable/chunks/B3bf7yrh.js.br +0 -0
- package/build/client/_app/immutable/chunks/B4IjTTLF.js.br +0 -0
- package/build/client/_app/immutable/chunks/B4IjTTLF.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BeFE4kE2.js +0 -3
- package/build/client/_app/immutable/chunks/BeFE4kE2.js.br +0 -0
- package/build/client/_app/immutable/chunks/BeFE4kE2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CtT1TXOG.js +0 -1
- package/build/client/_app/immutable/chunks/CtT1TXOG.js.br +0 -0
- package/build/client/_app/immutable/chunks/CtT1TXOG.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D5lcOOwR.js +0 -1
- package/build/client/_app/immutable/chunks/D5lcOOwR.js.br +0 -0
- package/build/client/_app/immutable/chunks/D5lcOOwR.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DCs3KlJy.js +0 -1
- package/build/client/_app/immutable/chunks/DCs3KlJy.js.br +0 -0
- package/build/client/_app/immutable/chunks/DCs3KlJy.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ct9jA5hl.js +0 -1
- package/build/client/_app/immutable/chunks/ct9jA5hl.js.br +0 -0
- package/build/client/_app/immutable/chunks/ct9jA5hl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/rXU5YtEm.js +0 -1
- package/build/client/_app/immutable/chunks/rXU5YtEm.js.br +0 -0
- package/build/client/_app/immutable/chunks/rXU5YtEm.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.VDao1I0a.js +0 -2
- package/build/client/_app/immutable/entry/app.VDao1I0a.js.br +0 -0
- package/build/client/_app/immutable/entry/app.VDao1I0a.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CqVn4hZK.js +0 -1
- package/build/client/_app/immutable/entry/start.CqVn4hZK.js.br +0 -0
- package/build/client/_app/immutable/entry/start.CqVn4hZK.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.BbGefPez.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.BbGefPez.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.C3jvF6zj.js +0 -1
- package/build/client/_app/immutable/nodes/1.C3jvF6zj.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.C3jvF6zj.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2._Jmh03he.js.br +0 -0
- package/build/client/_app/immutable/nodes/2._Jmh03he.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.C1G23fTe.js +0 -1
- package/build/client/_app/immutable/nodes/3.C1G23fTe.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.C1G23fTe.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.TQjMBeyV.js +0 -1
- package/build/client/_app/immutable/nodes/4.TQjMBeyV.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.TQjMBeyV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.SHyxFZfo.js +0 -1
- package/build/client/_app/immutable/nodes/5.SHyxFZfo.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.SHyxFZfo.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.ikul5Bcl.js +0 -1
- package/build/client/_app/immutable/nodes/6.ikul5Bcl.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.ikul5Bcl.js.gz +0 -0
- package/build/server/chunks/1-DffE3_iJ.js +0 -9
- package/build/server/chunks/3-D6wMMS06.js +0 -9
- package/build/server/chunks/3-D6wMMS06.js.map +0 -1
- package/build/server/chunks/4-BIBXJVxM.js +0 -9
- package/build/server/chunks/4-BIBXJVxM.js.map +0 -1
- package/build/server/chunks/5-DnTszr4V.js +0 -9
- package/build/server/chunks/5-DnTszr4V.js.map +0 -1
- package/build/server/chunks/6-Ls1UJLAz.js +0 -9
- package/build/server/chunks/6-Ls1UJLAz.js.map +0 -1
- package/build/server/chunks/Logout-CkwmxNTt.js.map +0 -1
- package/build/server/chunks/_page.svelte-CVJoQAAB.js.map +0 -1
- package/build/server/chunks/_page.svelte-D3kXcWlK.js.map +0 -1
- package/build/server/chunks/_page.svelte-DPdvFuWg.js +0 -12
- package/build/server/chunks/_page.svelte-whmO3TtB.js.map +0 -1
- package/build/server/chunks/client-C5BesWYV.js +0 -33
- package/build/server/chunks/client-C5BesWYV.js.map +0 -1
- package/build/server/chunks/error.svelte-Crm_85Km.js +0 -24
- package/build/server/chunks/error.svelte-Crm_85Km.js.map +0 -1
- package/build/server/chunks/exports-DeY8o0ws.js.map +0 -1
- package/build/server/chunks/hooks.server-DmgUjoZV.js +0 -17
- package/build/server/chunks/hooks.server-DmgUjoZV.js.map +0 -1
- package/build/server/chunks/user-DW-tjDe0.js.map +0 -1
package/build/server/manifest.js
CHANGED
|
@@ -10,15 +10,15 @@ return {
|
|
|
10
10
|
assets: new Set(["icons/brands.svg","icons/light.svg","icons/regular.svg","icons/solid.svg","styles.css"]),
|
|
11
11
|
mimeTypes: {".svg":"image/svg+xml",".css":"text/css"},
|
|
12
12
|
_: {
|
|
13
|
-
client: {start:"_app/immutable/entry/start.
|
|
13
|
+
client: {start:"_app/immutable/entry/start.BcxVnXqP.js",app:"_app/immutable/entry/app.BOAQU4lu.js",imports:["_app/immutable/entry/start.BcxVnXqP.js","_app/immutable/chunks/Cyzk4yeH.js","_app/immutable/chunks/IgiyYk6u.js","_app/immutable/chunks/DCUM25og.js","_app/immutable/chunks/BYEtX5Az.js","_app/immutable/chunks/p-F-zYzk.js","_app/immutable/entry/app.BOAQU4lu.js","_app/immutable/chunks/DCUM25og.js","_app/immutable/chunks/BYEtX5Az.js","_app/immutable/chunks/DsnmJJEf.js","_app/immutable/chunks/IgiyYk6u.js","_app/immutable/chunks/p-F-zYzk.js","_app/immutable/chunks/FWeOBoAM.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
|
|
14
14
|
nodes: [
|
|
15
|
-
__memo(() => import('./chunks/0-
|
|
16
|
-
__memo(() => import('./chunks/1-
|
|
17
|
-
__memo(() => import('./chunks/2-
|
|
18
|
-
__memo(() => import('./chunks/3-
|
|
19
|
-
__memo(() => import('./chunks/4-
|
|
20
|
-
__memo(() => import('./chunks/5-
|
|
21
|
-
__memo(() => import('./chunks/6-
|
|
15
|
+
__memo(() => import('./chunks/0-BwO1RCtn.js')),
|
|
16
|
+
__memo(() => import('./chunks/1-BtBlW1Zd.js')),
|
|
17
|
+
__memo(() => import('./chunks/2-BwMXZ3uH.js')),
|
|
18
|
+
__memo(() => import('./chunks/3-DZ3qU23G.js')),
|
|
19
|
+
__memo(() => import('./chunks/4-CiYhCg7w.js')),
|
|
20
|
+
__memo(() => import('./chunks/5-DeLLDZUB.js')),
|
|
21
|
+
__memo(() => import('./chunks/6-WSYEiBK_.js'))
|
|
22
22
|
],
|
|
23
23
|
routes: [
|
|
24
24
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"icons/brands.svg\",\"icons/light.svg\",\"icons/regular.svg\",\"icons/solid.svg\",\"styles.css\"]),\n\tmimeTypes: {\".svg\":\"image/svg+xml\",\".css\":\"text/css\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.
|
|
1
|
+
{"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"icons/brands.svg\",\"icons/light.svg\",\"icons/regular.svg\",\"icons/solid.svg\",\"styles.css\"]),\n\tmimeTypes: {\".svg\":\"image/svg+xml\",\".css\":\"text/css\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.BcxVnXqP.js\",app:\"_app/immutable/entry/app.BOAQU4lu.js\",imports:[\"_app/immutable/entry/start.BcxVnXqP.js\",\"_app/immutable/chunks/Cyzk4yeH.js\",\"_app/immutable/chunks/IgiyYk6u.js\",\"_app/immutable/chunks/DCUM25og.js\",\"_app/immutable/chunks/BYEtX5Az.js\",\"_app/immutable/chunks/p-F-zYzk.js\",\"_app/immutable/entry/app.BOAQU4lu.js\",\"_app/immutable/chunks/DCUM25og.js\",\"_app/immutable/chunks/BYEtX5Az.js\",\"_app/immutable/chunks/DsnmJJEf.js\",\"_app/immutable/chunks/IgiyYk6u.js\",\"_app/immutable/chunks/p-F-zYzk.js\",\"_app/immutable/chunks/FWeOBoAM.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js')),\n\t\t\t__memo(() => import('./nodes/4.js')),\n\t\t\t__memo(() => import('./nodes/5.js')),\n\t\t\t__memo(() => import('./nodes/6.js'))\n\t\t],\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/_axium/default\",\n\t\t\t\tpattern: /^\\/_axium\\/default\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/account\",\n\t\t\t\tpattern: /^\\/account\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/login\",\n\t\t\t\tpattern: /^\\/login\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 4 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/logout\",\n\t\t\t\tpattern: /^\\/logout\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 5 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/register\",\n\t\t\t\tpattern: /^\\/register\\/?$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 6 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"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"}
|
package/dist/api/acl.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
|
-
import { addRoute } from '../routes.js';
|
|
3
|
-
import { parseBody, withError } from '../requests.js';
|
|
4
2
|
import * as acl from '../acl.js';
|
|
3
|
+
import { parseBody, withError } from '../requests.js';
|
|
4
|
+
import { addRoute } from '../routes.js';
|
|
5
5
|
addRoute({
|
|
6
6
|
path: '/api/acl/:itemType/:itemId',
|
|
7
7
|
params: {
|
package/dist/api/metadata.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { requestMethods } from '@axium/core/requests';
|
|
2
|
-
import { error } from '@sveltejs/kit';
|
|
3
2
|
import pkg from '../../package.json' with { type: 'json' };
|
|
4
3
|
import { config } from '../config.js';
|
|
5
4
|
import { plugins } from '../plugins.js';
|
|
5
|
+
import { error } from '../requests.js';
|
|
6
6
|
import { addRoute, routes } from '../routes.js';
|
|
7
7
|
addRoute({
|
|
8
8
|
path: '/api/metadata',
|
|
9
9
|
async GET() {
|
|
10
|
-
if (config.api.disable_metadata)
|
|
11
|
-
error(401,
|
|
12
|
-
}
|
|
10
|
+
if (config.api.disable_metadata)
|
|
11
|
+
error(401, 'API metadata is disabled');
|
|
13
12
|
return {
|
|
14
13
|
version: pkg.version,
|
|
15
14
|
routes: Object.fromEntries(routes
|
package/dist/api/passkeys.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { PasskeyChangeable } from '@axium/core/schemas';
|
|
2
|
-
import { error } from '@sveltejs/kit';
|
|
3
2
|
import { omit } from 'utilium';
|
|
4
3
|
import * as z from 'zod';
|
|
5
4
|
import { checkAuthForUser, getPasskey } from '../auth.js';
|
|
6
5
|
import { database as db } from '../database.js';
|
|
7
|
-
import { parseBody, withError } from '../requests.js';
|
|
6
|
+
import { error, parseBody, withError } from '../requests.js';
|
|
8
7
|
import { addRoute } from '../routes.js';
|
|
9
8
|
addRoute({
|
|
10
9
|
path: '/api/passkeys/:id',
|
package/dist/api/register.js
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import { APIUserRegistration } from '@axium/core/schemas';
|
|
2
2
|
import { generateRegistrationOptions, verifyRegistrationResponse } from '@simplewebauthn/server';
|
|
3
|
-
import { error } from '@sveltejs/kit';
|
|
4
3
|
import { randomUUID } from 'node:crypto';
|
|
5
4
|
import * as z from 'zod';
|
|
6
5
|
import { createPasskey, getUser } from '../auth.js';
|
|
7
6
|
import config from '../config.js';
|
|
8
7
|
import { database as db } from '../database.js';
|
|
8
|
+
import { createSessionData, error, parseBody, withError } from '../requests.js';
|
|
9
9
|
import { addRoute } from '../routes.js';
|
|
10
|
-
import { createSessionData, parseBody, withError } from '../requests.js';
|
|
11
10
|
// Map of user ID => challenge
|
|
12
11
|
const registrations = new Map();
|
|
13
12
|
async function OPTIONS(event) {
|
|
14
13
|
if (!config.allow_new_users)
|
|
15
|
-
error(409,
|
|
14
|
+
error(409, 'New user registration is disabled');
|
|
16
15
|
const { name, email } = await parseBody(event, z.object({ name: z.string().optional(), email: z.email().optional() }));
|
|
17
16
|
const userId = randomUUID();
|
|
18
17
|
const user = await getUser(userId).catch(() => null);
|
|
19
18
|
if (user)
|
|
20
|
-
error(409,
|
|
19
|
+
error(409, 'Generated UUID is already in use, please retry.');
|
|
21
20
|
const options = await generateRegistrationOptions({
|
|
22
21
|
rpName: config.auth.rp_name,
|
|
23
22
|
rpID: config.auth.rp_id,
|
|
@@ -36,22 +35,22 @@ async function OPTIONS(event) {
|
|
|
36
35
|
}
|
|
37
36
|
async function POST(event) {
|
|
38
37
|
if (!config.allow_new_users)
|
|
39
|
-
error(409,
|
|
38
|
+
error(409, 'New user registration is disabled');
|
|
40
39
|
const { userId, email, name, response } = await parseBody(event, APIUserRegistration);
|
|
41
40
|
const existing = await db.selectFrom('users').selectAll().where('email', '=', email.toLowerCase()).executeTakeFirst();
|
|
42
41
|
if (existing)
|
|
43
|
-
error(409,
|
|
42
|
+
error(409, 'Email already in use');
|
|
44
43
|
const expectedChallenge = registrations.get(userId);
|
|
45
44
|
if (!expectedChallenge)
|
|
46
|
-
error(404,
|
|
45
|
+
error(404, 'No registration challenge found for this user');
|
|
47
46
|
registrations.delete(userId);
|
|
48
47
|
const { verified, registrationInfo } = await verifyRegistrationResponse({
|
|
49
48
|
response,
|
|
50
49
|
expectedChallenge,
|
|
51
50
|
expectedOrigin: config.auth.origin,
|
|
52
|
-
}).catch(() => error(400,
|
|
51
|
+
}).catch(() => error(400, 'Verification failed'));
|
|
53
52
|
if (!verified || !registrationInfo)
|
|
54
|
-
error(401,
|
|
53
|
+
error(401, 'Verification failed');
|
|
55
54
|
await db
|
|
56
55
|
.insertInto('users')
|
|
57
56
|
.values({ id: userId, name, email: email.toLowerCase() })
|
|
@@ -63,7 +62,7 @@ async function POST(event) {
|
|
|
63
62
|
userId,
|
|
64
63
|
deviceType: registrationInfo.credentialDeviceType,
|
|
65
64
|
backedUp: registrationInfo.credentialBackedUp,
|
|
66
|
-
}).catch(
|
|
65
|
+
}).catch(withError('Failed to create passkey', 500));
|
|
67
66
|
return await createSessionData(userId);
|
|
68
67
|
}
|
|
69
68
|
addRoute({
|
package/dist/api/session.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { error } from '@sveltejs/kit';
|
|
2
1
|
import { omit } from 'utilium';
|
|
3
2
|
import { getSessionAndUser } from '../auth.js';
|
|
4
3
|
import { database as db } from '../database.js';
|
|
5
|
-
import { getToken, stripUser, withError } from '../requests.js';
|
|
4
|
+
import { error, getToken, stripUser, withError } from '../requests.js';
|
|
6
5
|
import { addRoute } from '../routes.js';
|
|
7
6
|
addRoute({
|
|
8
7
|
path: '/api/session',
|
package/dist/api/users.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { LogoutSessions, PasskeyAuthenticationResponse, PasskeyRegistration, UserAuthOptions } from '@axium/core/schemas';
|
|
2
2
|
import { UserChangeable } from '@axium/core/user';
|
|
3
3
|
import * as webauthn from '@simplewebauthn/server';
|
|
4
|
-
import { error } from '@sveltejs/kit';
|
|
5
4
|
import { omit, pick } from 'utilium';
|
|
6
5
|
import * as z from 'zod';
|
|
7
6
|
import { checkAuthForUser, createPasskey, createVerification, getPasskey, getPasskeysByUserId, getSessions, getUser, useVerification, } from '../auth.js';
|
|
8
7
|
import { config } from '../config.js';
|
|
9
8
|
import { database as db } from '../database.js';
|
|
10
|
-
import { createSessionData, parseBody, stripUser, withError } from '../requests.js';
|
|
9
|
+
import { createSessionData, error, parseBody, stripUser, withError } from '../requests.js';
|
|
11
10
|
import { addRoute } from '../routes.js';
|
|
12
11
|
const challenges = new Map();
|
|
13
12
|
const params = { id: z.uuid() };
|
|
@@ -85,7 +84,7 @@ addRoute({
|
|
|
85
84
|
await getUser(userId).catch(withError('User does not exist', 404));
|
|
86
85
|
const passkeys = await getPasskeysByUserId(userId);
|
|
87
86
|
if (!passkeys)
|
|
88
|
-
error(409,
|
|
87
|
+
error(409, 'No passkeys exists for this user');
|
|
89
88
|
const options = await webauthn.generateAuthenticationOptions({
|
|
90
89
|
rpID: config.auth.rp_id,
|
|
91
90
|
allowCredentials: passkeys.map(passkey => pick(passkey, 'id', 'transports')),
|
|
@@ -98,12 +97,12 @@ addRoute({
|
|
|
98
97
|
const response = await parseBody(event, PasskeyAuthenticationResponse);
|
|
99
98
|
const auth = challenges.get(userId);
|
|
100
99
|
if (!auth)
|
|
101
|
-
error(404,
|
|
100
|
+
error(404, 'No challenge');
|
|
102
101
|
const { data: expectedChallenge, type } = auth;
|
|
103
102
|
challenges.delete(userId);
|
|
104
103
|
const passkey = await getPasskey(response.id).catch(withError('Passkey does not exist', 404));
|
|
105
104
|
if (passkey.userId !== userId)
|
|
106
|
-
error(403,
|
|
105
|
+
error(403, 'Passkey does not belong to this user');
|
|
107
106
|
const { verified } = await webauthn
|
|
108
107
|
.verifyAuthenticationResponse({
|
|
109
108
|
response,
|
|
@@ -114,13 +113,13 @@ addRoute({
|
|
|
114
113
|
})
|
|
115
114
|
.catch(withError('Verification failed', 400));
|
|
116
115
|
if (!verified)
|
|
117
|
-
error(401,
|
|
116
|
+
error(401, 'Verification failed');
|
|
118
117
|
switch (type) {
|
|
119
118
|
case 'login':
|
|
120
119
|
return await createSessionData(userId);
|
|
121
120
|
case 'action':
|
|
122
121
|
if ((Date.now() - passkey.createdAt.getTime()) / 60_000 < config.auth.passkey_probation)
|
|
123
|
-
error(403,
|
|
122
|
+
error(403, 'You can not authorize sensitive actions with a newly created passkey');
|
|
124
123
|
return await createSessionData(userId, true);
|
|
125
124
|
}
|
|
126
125
|
},
|
|
@@ -171,7 +170,7 @@ addRoute({
|
|
|
171
170
|
await checkAuthForUser(event, userId);
|
|
172
171
|
const expectedChallenge = registrations.get(userId);
|
|
173
172
|
if (!expectedChallenge)
|
|
174
|
-
error(404,
|
|
173
|
+
error(404, 'No registration challenge found for this user');
|
|
175
174
|
registrations.delete(userId);
|
|
176
175
|
const { verified, registrationInfo } = await webauthn
|
|
177
176
|
.verifyRegistrationResponse({
|
|
@@ -181,7 +180,7 @@ addRoute({
|
|
|
181
180
|
})
|
|
182
181
|
.catch(withError('Verification failed', 400));
|
|
183
182
|
if (!verified || !registrationInfo)
|
|
184
|
-
error(401,
|
|
183
|
+
error(401, 'Verification failed');
|
|
185
184
|
const passkey = await createPasskey({
|
|
186
185
|
transports: [],
|
|
187
186
|
...registrationInfo.credential,
|
|
@@ -205,7 +204,7 @@ addRoute({
|
|
|
205
204
|
const body = await parseBody(event, LogoutSessions);
|
|
206
205
|
await checkAuthForUser(event, userId, body.confirm_all);
|
|
207
206
|
if (!body.confirm_all && !Array.isArray(body.id))
|
|
208
|
-
error(400,
|
|
207
|
+
error(400, 'Invalid request body');
|
|
209
208
|
const query = body.confirm_all ? db.deleteFrom('sessions') : db.deleteFrom('sessions').where('sessions.id', 'in', body.id);
|
|
210
209
|
const result = await query
|
|
211
210
|
.where('sessions.userId', '=', userId)
|
|
@@ -231,7 +230,7 @@ addRoute({
|
|
|
231
230
|
const userId = event.params.id;
|
|
232
231
|
const { user } = await checkAuthForUser(event, userId);
|
|
233
232
|
if (user.emailVerified)
|
|
234
|
-
error(409,
|
|
233
|
+
error(409, 'Email already verified');
|
|
235
234
|
const verification = await createVerification('verify_email', userId, config.auth.verification_timeout * 60);
|
|
236
235
|
return omit(verification, 'token', 'role');
|
|
237
236
|
},
|
|
@@ -240,7 +239,7 @@ addRoute({
|
|
|
240
239
|
const { token } = await parseBody(event, z.object({ token: z.string() }));
|
|
241
240
|
const { user } = await checkAuthForUser(event, userId);
|
|
242
241
|
if (user.emailVerified)
|
|
243
|
-
error(409,
|
|
242
|
+
error(409, 'Email already verified');
|
|
244
243
|
await useVerification('verify_email', userId, token).catch(withError('Invalid or expired verification token', 400));
|
|
245
244
|
return {};
|
|
246
245
|
},
|
package/dist/auth.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { Permission } from '@axium/core';
|
|
2
2
|
import type { Passkey, Session, Verification } from '@axium/core/api';
|
|
3
3
|
import type { User } from '@axium/core/user';
|
|
4
|
-
import { type RequestEvent } from '@sveltejs/kit';
|
|
5
4
|
import type { Insertable } from 'kysely';
|
|
6
5
|
import * as acl from './acl.js';
|
|
7
6
|
import { type Schema } from './database.js';
|
|
7
|
+
import type { RequestEvent } from './requests.js';
|
|
8
8
|
export interface UserInternal extends User {
|
|
9
9
|
isAdmin: boolean;
|
|
10
10
|
/** Tags are internal, roles are public */
|
package/dist/auth.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { error } from '@sveltejs/kit';
|
|
2
1
|
import { randomBytes, randomUUID } from 'node:crypto';
|
|
3
2
|
import { omit } from 'utilium';
|
|
4
3
|
import * as acl from './acl.js';
|
|
5
4
|
import { database as db, userFromId } from './database.js';
|
|
6
|
-
import { getToken, withError } from './requests.js';
|
|
5
|
+
import { error, getToken, withError } from './requests.js';
|
|
7
6
|
export async function getUser(id) {
|
|
8
7
|
return await db.selectFrom('users').selectAll().where('id', '=', id).executeTakeFirstOrThrow();
|
|
9
8
|
}
|
package/dist/cli.js
CHANGED
|
@@ -66,7 +66,7 @@ import * as db from './database.js';
|
|
|
66
66
|
import { _portActions, _portMethods, exit, handleError, output, restrictedPorts, setCommandTimeout, warn } from './io.js';
|
|
67
67
|
import { linkRoutes, listRouteLinks, unlinkRoutes } from './linking.js';
|
|
68
68
|
import { getSpecifier, plugins, pluginText, resolvePlugin } from './plugins.js';
|
|
69
|
-
import {
|
|
69
|
+
import { serveSvelteKit } from './serve.js';
|
|
70
70
|
function readline() {
|
|
71
71
|
const rl = createInterface({
|
|
72
72
|
input: process.stdin,
|
|
@@ -531,7 +531,7 @@ program
|
|
|
531
531
|
.option('--ssl <prefix>', 'the prefix for the cert.pem and key.pem SSL files')
|
|
532
532
|
.option('-B, --build', 'the path to a built SvelteKit server handler')
|
|
533
533
|
.action(async (opt) => {
|
|
534
|
-
const server = await
|
|
534
|
+
const server = await serveSvelteKit({
|
|
535
535
|
secure: opt.ssl ? true : config.web.secure,
|
|
536
536
|
ssl_cert: opt.ssl ? join(opt.ssl, 'cert.pem') : config.web.ssl_cert,
|
|
537
537
|
ssl_key: opt.ssl ? join(opt.ssl, 'key.pem') : config.web.ssl_key,
|
package/dist/config.d.ts
CHANGED
|
@@ -1,68 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { type PartialRecursive } from 'utilium';
|
|
1
|
+
import { type DeepRequired } from 'utilium';
|
|
3
2
|
import * as z from 'zod';
|
|
4
|
-
export
|
|
5
|
-
allow_new_users: boolean;
|
|
6
|
-
api: Record<string, unknown> & {
|
|
7
|
-
disable_metadata: boolean;
|
|
8
|
-
cookie_auth: boolean;
|
|
9
|
-
};
|
|
10
|
-
apps: Record<string, unknown> & {
|
|
11
|
-
disabled: string[];
|
|
12
|
-
};
|
|
13
|
-
auth: Record<string, unknown> & {
|
|
14
|
-
origin: string;
|
|
15
|
-
/** In minutes */
|
|
16
|
-
passkey_probation: number;
|
|
17
|
-
rp_id: string;
|
|
18
|
-
rp_name: string;
|
|
19
|
-
secure_cookies: boolean;
|
|
20
|
-
/** In minutes */
|
|
21
|
-
verification_timeout: number;
|
|
22
|
-
/** Whether users can verify emails */
|
|
23
|
-
email_verification: boolean;
|
|
24
|
-
};
|
|
25
|
-
db: Record<string, unknown> & {
|
|
26
|
-
host: string;
|
|
27
|
-
port: number;
|
|
28
|
-
password: string;
|
|
29
|
-
user: string;
|
|
30
|
-
database: string;
|
|
31
|
-
};
|
|
32
|
-
debug: boolean;
|
|
33
|
-
log: Record<string, unknown> & {
|
|
34
|
-
level: (typeof levelText)[number];
|
|
35
|
-
console: boolean;
|
|
36
|
-
};
|
|
37
|
-
show_duplicate_state: boolean;
|
|
38
|
-
web: Record<string, unknown> & {
|
|
39
|
-
assets: string;
|
|
40
|
-
build: string;
|
|
41
|
-
disable_cache: boolean;
|
|
42
|
-
port: number;
|
|
43
|
-
prefix: string;
|
|
44
|
-
routes: string;
|
|
45
|
-
secure: boolean;
|
|
46
|
-
ssl_key: string;
|
|
47
|
-
ssl_cert: string;
|
|
48
|
-
template: string;
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
export declare const configFiles: Map<string, File>;
|
|
52
|
-
export declare function plainConfig(): Omit<Config, keyof typeof configShortcuts>;
|
|
53
|
-
declare const configShortcuts: {
|
|
54
|
-
findPath: typeof findConfigPaths;
|
|
55
|
-
load: typeof loadConfig;
|
|
56
|
-
loadDefaults: typeof loadDefaultConfigs;
|
|
57
|
-
plain: typeof plainConfig;
|
|
58
|
-
save: typeof saveConfig;
|
|
59
|
-
saveTo: typeof saveConfigTo;
|
|
60
|
-
set: typeof setConfig;
|
|
61
|
-
files: Map<string, File>;
|
|
62
|
-
};
|
|
63
|
-
export declare const config: Config & typeof configShortcuts;
|
|
64
|
-
export default config;
|
|
65
|
-
export declare const FileSchema: z.ZodObject<{
|
|
3
|
+
export declare const ConfigSchema: z.ZodObject<{
|
|
66
4
|
allow_new_users: z.ZodOptional<z.ZodBoolean>;
|
|
67
5
|
api: z.ZodOptional<z.ZodObject<{
|
|
68
6
|
disable_metadata: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -91,10 +29,10 @@ export declare const FileSchema: z.ZodObject<{
|
|
|
91
29
|
log: z.ZodOptional<z.ZodObject<{
|
|
92
30
|
level: z.ZodOptional<z.ZodEnum<{
|
|
93
31
|
error: "error";
|
|
32
|
+
notice: "notice";
|
|
94
33
|
warn: "warn";
|
|
95
34
|
info: "info";
|
|
96
35
|
debug: "debug";
|
|
97
|
-
notice: "notice";
|
|
98
36
|
}>>;
|
|
99
37
|
console: z.ZodOptional<z.ZodBoolean>;
|
|
100
38
|
}, z.core.$loose>>;
|
|
@@ -111,16 +49,82 @@ export declare const FileSchema: z.ZodObject<{
|
|
|
111
49
|
ssl_cert: z.ZodOptional<z.ZodString>;
|
|
112
50
|
template: z.ZodOptional<z.ZodString>;
|
|
113
51
|
}, z.core.$loose>>;
|
|
52
|
+
}, z.core.$loose>;
|
|
53
|
+
export interface Config extends z.infer<typeof ConfigSchema> {
|
|
54
|
+
}
|
|
55
|
+
export declare const configFiles: Map<string, File>;
|
|
56
|
+
export declare function plainConfig(): Omit<DeepRequired<Config>, keyof typeof configShortcuts>;
|
|
57
|
+
declare const configShortcuts: {
|
|
58
|
+
findPath: typeof findConfigPaths;
|
|
59
|
+
load: typeof loadConfig;
|
|
60
|
+
loadDefaults: typeof loadDefaultConfigs;
|
|
61
|
+
plain: typeof plainConfig;
|
|
62
|
+
save: typeof saveConfig;
|
|
63
|
+
saveTo: typeof saveConfigTo;
|
|
64
|
+
set: typeof setConfig;
|
|
65
|
+
files: Map<string, File>;
|
|
66
|
+
};
|
|
67
|
+
export declare const config: DeepRequired<Config> & typeof configShortcuts;
|
|
68
|
+
export default config;
|
|
69
|
+
export declare const FileSchema: z.ZodObject<{
|
|
114
70
|
include: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
115
71
|
plugins: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
72
|
+
allow_new_users: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
|
|
73
|
+
api: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
74
|
+
disable_metadata: z.ZodOptional<z.ZodBoolean>;
|
|
75
|
+
cookie_auth: z.ZodOptional<z.ZodBoolean>;
|
|
76
|
+
}, z.core.$loose>>>;
|
|
77
|
+
apps: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
78
|
+
disabled: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
79
|
+
}, z.core.$loose>>>;
|
|
80
|
+
auth: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
81
|
+
origin: z.ZodOptional<z.ZodString>;
|
|
82
|
+
passkey_probation: z.ZodOptional<z.ZodNumber>;
|
|
83
|
+
rp_id: z.ZodOptional<z.ZodString>;
|
|
84
|
+
rp_name: z.ZodOptional<z.ZodString>;
|
|
85
|
+
secure_cookies: z.ZodOptional<z.ZodBoolean>;
|
|
86
|
+
verification_timeout: z.ZodOptional<z.ZodNumber>;
|
|
87
|
+
email_verification: z.ZodOptional<z.ZodBoolean>;
|
|
88
|
+
}, z.core.$loose>>>;
|
|
89
|
+
db: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
90
|
+
host: z.ZodOptional<z.ZodString>;
|
|
91
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
92
|
+
password: z.ZodOptional<z.ZodString>;
|
|
93
|
+
user: z.ZodOptional<z.ZodString>;
|
|
94
|
+
database: z.ZodOptional<z.ZodString>;
|
|
95
|
+
}, z.core.$loose>>>;
|
|
96
|
+
debug: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
|
|
97
|
+
log: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
98
|
+
level: z.ZodOptional<z.ZodEnum<{
|
|
99
|
+
error: "error";
|
|
100
|
+
notice: "notice";
|
|
101
|
+
warn: "warn";
|
|
102
|
+
info: "info";
|
|
103
|
+
debug: "debug";
|
|
104
|
+
}>>;
|
|
105
|
+
console: z.ZodOptional<z.ZodBoolean>;
|
|
106
|
+
}, z.core.$loose>>>;
|
|
107
|
+
show_duplicate_state: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
|
|
108
|
+
web: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
109
|
+
assets: z.ZodOptional<z.ZodString>;
|
|
110
|
+
build: z.ZodOptional<z.ZodString>;
|
|
111
|
+
disable_cache: z.ZodOptional<z.ZodBoolean>;
|
|
112
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
113
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
114
|
+
routes: z.ZodOptional<z.ZodString>;
|
|
115
|
+
secure: z.ZodOptional<z.ZodBoolean>;
|
|
116
|
+
ssl_key: z.ZodOptional<z.ZodString>;
|
|
117
|
+
ssl_cert: z.ZodOptional<z.ZodString>;
|
|
118
|
+
template: z.ZodOptional<z.ZodString>;
|
|
119
|
+
}, z.core.$loose>>>;
|
|
116
120
|
}, z.core.$loose>;
|
|
117
|
-
export interface File extends
|
|
121
|
+
export interface File extends z.infer<typeof FileSchema> {
|
|
118
122
|
}
|
|
119
|
-
export declare function addConfigDefaults(other:
|
|
123
|
+
export declare function addConfigDefaults(other: Config, _target?: Record<string, any>): void;
|
|
120
124
|
/**
|
|
121
125
|
* Update the current config
|
|
122
126
|
*/
|
|
123
|
-
export declare function setConfig(other:
|
|
127
|
+
export declare function setConfig(other: Config): void;
|
|
124
128
|
export interface LoadOptions {
|
|
125
129
|
/**
|
|
126
130
|
* If enabled, the config file will still be loaded if it does not match the schema.
|
|
@@ -143,11 +147,11 @@ export declare function loadDefaultConfigs(): Promise<void>;
|
|
|
143
147
|
/**
|
|
144
148
|
* Update the current config and write the updated config to the appropriate file
|
|
145
149
|
*/
|
|
146
|
-
export declare function saveConfig(changed:
|
|
150
|
+
export declare function saveConfig(changed: Config, global?: boolean): void;
|
|
147
151
|
/**
|
|
148
152
|
* Update the current config and write the updated config to the provided path
|
|
149
153
|
*/
|
|
150
|
-
export declare function saveConfigTo(path: string, changed:
|
|
154
|
+
export declare function saveConfigTo(path: string, changed: Config): void;
|
|
151
155
|
/**
|
|
152
156
|
* Find the path to the config file(s)
|
|
153
157
|
* This array should roughly be in the order of most global to most local.
|
package/dist/config.js
CHANGED
|
@@ -6,6 +6,67 @@ import * as z from 'zod';
|
|
|
6
6
|
import { _setDebugOutput, dirs, logger, output } from './io.js';
|
|
7
7
|
import { loadPlugin } from './plugins.js';
|
|
8
8
|
import { _duplicateStateWarnings, _unique } from './state.js';
|
|
9
|
+
export const ConfigSchema = z
|
|
10
|
+
.looseObject({
|
|
11
|
+
allow_new_users: z.boolean(),
|
|
12
|
+
api: z
|
|
13
|
+
.looseObject({
|
|
14
|
+
disable_metadata: z.boolean(),
|
|
15
|
+
cookie_auth: z.boolean(),
|
|
16
|
+
})
|
|
17
|
+
.partial(),
|
|
18
|
+
apps: z
|
|
19
|
+
.looseObject({
|
|
20
|
+
disabled: z.array(z.string()),
|
|
21
|
+
})
|
|
22
|
+
.partial(),
|
|
23
|
+
auth: z
|
|
24
|
+
.looseObject({
|
|
25
|
+
origin: z.string(),
|
|
26
|
+
/** In minutes */
|
|
27
|
+
passkey_probation: z.number(),
|
|
28
|
+
rp_id: z.string(),
|
|
29
|
+
rp_name: z.string(),
|
|
30
|
+
secure_cookies: z.boolean(),
|
|
31
|
+
/** In minutes */
|
|
32
|
+
verification_timeout: z.number(),
|
|
33
|
+
/** Whether users can verify emails */
|
|
34
|
+
email_verification: z.boolean(),
|
|
35
|
+
})
|
|
36
|
+
.partial(),
|
|
37
|
+
db: z
|
|
38
|
+
.looseObject({
|
|
39
|
+
host: z.string(),
|
|
40
|
+
port: z.number(),
|
|
41
|
+
password: z.string(),
|
|
42
|
+
user: z.string(),
|
|
43
|
+
database: z.string(),
|
|
44
|
+
})
|
|
45
|
+
.partial(),
|
|
46
|
+
debug: z.boolean(),
|
|
47
|
+
log: z
|
|
48
|
+
.looseObject({
|
|
49
|
+
level: z.enum(levelText),
|
|
50
|
+
console: z.boolean(),
|
|
51
|
+
})
|
|
52
|
+
.partial(),
|
|
53
|
+
show_duplicate_state: z.boolean(),
|
|
54
|
+
web: z
|
|
55
|
+
.looseObject({
|
|
56
|
+
assets: z.string(),
|
|
57
|
+
build: z.string(),
|
|
58
|
+
disable_cache: z.boolean(),
|
|
59
|
+
port: z.number().min(1).max(65535),
|
|
60
|
+
prefix: z.string(),
|
|
61
|
+
routes: z.string(),
|
|
62
|
+
secure: z.boolean(),
|
|
63
|
+
ssl_key: z.string(),
|
|
64
|
+
ssl_cert: z.string(),
|
|
65
|
+
template: z.string(),
|
|
66
|
+
})
|
|
67
|
+
.partial(),
|
|
68
|
+
})
|
|
69
|
+
.partial();
|
|
9
70
|
export const configFiles = _unique('configFiles', new Map());
|
|
10
71
|
export function plainConfig() {
|
|
11
72
|
return omit(config, Object.keys(configShortcuts));
|
|
@@ -69,63 +130,7 @@ export default config;
|
|
|
69
130
|
// config from file
|
|
70
131
|
export const FileSchema = z
|
|
71
132
|
.looseObject({
|
|
72
|
-
|
|
73
|
-
api: z
|
|
74
|
-
.looseObject({
|
|
75
|
-
disable_metadata: z.boolean(),
|
|
76
|
-
cookie_auth: z.boolean(),
|
|
77
|
-
})
|
|
78
|
-
.partial(),
|
|
79
|
-
apps: z
|
|
80
|
-
.looseObject({
|
|
81
|
-
disabled: z.array(z.string()),
|
|
82
|
-
})
|
|
83
|
-
.partial(),
|
|
84
|
-
auth: z
|
|
85
|
-
.looseObject({
|
|
86
|
-
origin: z.string(),
|
|
87
|
-
/** In minutes */
|
|
88
|
-
passkey_probation: z.number(),
|
|
89
|
-
rp_id: z.string(),
|
|
90
|
-
rp_name: z.string(),
|
|
91
|
-
secure_cookies: z.boolean(),
|
|
92
|
-
/** In minutes */
|
|
93
|
-
verification_timeout: z.number(),
|
|
94
|
-
/** Whether users can verify emails */
|
|
95
|
-
email_verification: z.boolean(),
|
|
96
|
-
})
|
|
97
|
-
.partial(),
|
|
98
|
-
db: z
|
|
99
|
-
.looseObject({
|
|
100
|
-
host: z.string(),
|
|
101
|
-
port: z.number(),
|
|
102
|
-
password: z.string(),
|
|
103
|
-
user: z.string(),
|
|
104
|
-
database: z.string(),
|
|
105
|
-
})
|
|
106
|
-
.partial(),
|
|
107
|
-
debug: z.boolean(),
|
|
108
|
-
log: z
|
|
109
|
-
.looseObject({
|
|
110
|
-
level: z.enum(levelText),
|
|
111
|
-
console: z.boolean(),
|
|
112
|
-
})
|
|
113
|
-
.partial(),
|
|
114
|
-
show_duplicate_state: z.boolean(),
|
|
115
|
-
web: z
|
|
116
|
-
.looseObject({
|
|
117
|
-
assets: z.string(),
|
|
118
|
-
build: z.string(),
|
|
119
|
-
disable_cache: z.boolean(),
|
|
120
|
-
port: z.number().min(1).max(65535),
|
|
121
|
-
prefix: z.string(),
|
|
122
|
-
routes: z.string(),
|
|
123
|
-
secure: z.boolean(),
|
|
124
|
-
ssl_key: z.string(),
|
|
125
|
-
ssl_cert: z.string(),
|
|
126
|
-
template: z.string(),
|
|
127
|
-
})
|
|
128
|
-
.partial(),
|
|
133
|
+
...ConfigSchema.shape,
|
|
129
134
|
include: z.array(z.string()),
|
|
130
135
|
plugins: z.array(z.string()),
|
|
131
136
|
})
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED