@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.
Files changed (191) hide show
  1. package/build/client/_app/immutable/chunks/BYEtX5Az.js +1 -0
  2. package/build/client/_app/immutable/chunks/BYEtX5Az.js.br +0 -0
  3. package/build/client/_app/immutable/chunks/BYEtX5Az.js.gz +0 -0
  4. package/build/client/_app/immutable/chunks/Cyzk4yeH.js +3 -0
  5. package/build/client/_app/immutable/chunks/Cyzk4yeH.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/Cyzk4yeH.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{B3bf7yrh.js → DCUM25og.js} +1 -1
  8. package/build/client/_app/immutable/chunks/DCUM25og.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/{B3bf7yrh.js.gz → DCUM25og.js.gz} +0 -0
  10. package/build/client/_app/immutable/chunks/DY1x3fBx.js +1 -0
  11. package/build/client/_app/immutable/chunks/DY1x3fBx.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/DY1x3fBx.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{B4IjTTLF.js → DYZBB-Ix.js} +8 -8
  14. package/build/client/_app/immutable/chunks/DYZBB-Ix.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/DYZBB-Ix.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/FWeOBoAM.js +1 -0
  17. package/build/client/_app/immutable/chunks/FWeOBoAM.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/FWeOBoAM.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/IgiyYk6u.js +1 -0
  20. package/build/client/_app/immutable/chunks/IgiyYk6u.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/IgiyYk6u.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/p-F-zYzk.js +1 -0
  23. package/build/client/_app/immutable/chunks/p-F-zYzk.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/p-F-zYzk.js.gz +0 -0
  25. package/build/client/_app/immutable/entry/app.BOAQU4lu.js +2 -0
  26. package/build/client/_app/immutable/entry/app.BOAQU4lu.js.br +0 -0
  27. package/build/client/_app/immutable/entry/app.BOAQU4lu.js.gz +0 -0
  28. package/build/client/_app/immutable/entry/start.BcxVnXqP.js +1 -0
  29. package/build/client/_app/immutable/entry/start.BcxVnXqP.js.br +2 -0
  30. package/build/client/_app/immutable/entry/start.BcxVnXqP.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{0.BbGefPez.js → 0.fU2Fkia3.js} +1 -1
  32. package/build/client/_app/immutable/nodes/0.fU2Fkia3.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/0.fU2Fkia3.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/1.ebxToP8U.js +1 -0
  35. package/build/client/_app/immutable/nodes/1.ebxToP8U.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/1.ebxToP8U.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{2._Jmh03he.js → 2.Cczp5_pl.js} +1 -1
  38. package/build/client/_app/immutable/nodes/2.Cczp5_pl.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/2.Cczp5_pl.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/3.BwwptDiR.js +1 -0
  41. package/build/client/_app/immutable/nodes/3.BwwptDiR.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/3.BwwptDiR.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/4.DFZa97F0.js +1 -0
  44. package/build/client/_app/immutable/nodes/4.DFZa97F0.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/4.DFZa97F0.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/5.CObFvODa.js +1 -0
  47. package/build/client/_app/immutable/nodes/5.CObFvODa.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/5.CObFvODa.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/6.ezb4muQm.js +1 -0
  50. package/build/client/_app/immutable/nodes/6.ezb4muQm.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/6.ezb4muQm.js.gz +0 -0
  52. package/build/client/_app/version.json +1 -1
  53. package/build/client/_app/version.json.br +0 -0
  54. package/build/client/_app/version.json.gz +0 -0
  55. package/build/server/chunks/{0-CUfr8UwD.js → 0-BwO1RCtn.js} +2 -2
  56. package/build/server/chunks/{0-CUfr8UwD.js.map → 0-BwO1RCtn.js.map} +1 -1
  57. package/build/server/chunks/1-BtBlW1Zd.js +9 -0
  58. package/build/server/chunks/{1-DffE3_iJ.js.map → 1-BtBlW1Zd.js.map} +1 -1
  59. package/build/server/chunks/{2-c1bljkMr.js → 2-BwMXZ3uH.js} +2 -2
  60. package/build/server/chunks/{2-c1bljkMr.js.map → 2-BwMXZ3uH.js.map} +1 -1
  61. package/build/server/chunks/3-DZ3qU23G.js +9 -0
  62. package/build/server/chunks/3-DZ3qU23G.js.map +1 -0
  63. package/build/server/chunks/4-CiYhCg7w.js +9 -0
  64. package/build/server/chunks/4-CiYhCg7w.js.map +1 -0
  65. package/build/server/chunks/5-DeLLDZUB.js +9 -0
  66. package/build/server/chunks/5-DeLLDZUB.js.map +1 -0
  67. package/build/server/chunks/6-WSYEiBK_.js +9 -0
  68. package/build/server/chunks/6-WSYEiBK_.js.map +1 -0
  69. package/build/server/chunks/{Logout-CkwmxNTt.js → Logout-CXx10rDN.js} +4 -5
  70. package/build/server/chunks/Logout-CXx10rDN.js.map +1 -0
  71. package/build/server/chunks/_page.svelte-BBp1dML7.js +11 -0
  72. package/build/server/chunks/{_page.svelte-DPdvFuWg.js.map → _page.svelte-BBp1dML7.js.map} +1 -1
  73. package/build/server/chunks/{_page.svelte-CVJoQAAB.js → _page.svelte-C_AR-luT.js} +4 -5
  74. package/build/server/chunks/_page.svelte-C_AR-luT.js.map +1 -0
  75. package/build/server/chunks/{_page.svelte-whmO3TtB.js → _page.svelte-CrDbYLUc.js} +10 -365
  76. package/build/server/chunks/_page.svelte-CrDbYLUc.js.map +1 -0
  77. package/build/server/chunks/{_page.svelte-D3kXcWlK.js → _page.svelte-Ds-0vPQG.js} +4 -5
  78. package/build/server/chunks/_page.svelte-Ds-0vPQG.js.map +1 -0
  79. package/build/server/chunks/error.svelte-DkJRpKga.js +46 -0
  80. package/build/server/chunks/error.svelte-DkJRpKga.js.map +1 -0
  81. package/build/server/chunks/exports-Cc9yggiy.js +226 -0
  82. package/build/server/chunks/exports-Cc9yggiy.js.map +1 -0
  83. package/build/server/chunks/hooks.server-PyYsuy1-.js +1324 -0
  84. package/build/server/chunks/hooks.server-PyYsuy1-.js.map +1 -0
  85. package/build/server/chunks/{exports-DeY8o0ws.js → index-CBVFb-Fk.js} +2 -223
  86. package/build/server/chunks/index-CBVFb-Fk.js.map +1 -0
  87. package/build/server/chunks/{user-DW-tjDe0.js → schemas-C2VqNPFY.js} +129 -2079
  88. package/build/server/chunks/schemas-C2VqNPFY.js.map +1 -0
  89. package/build/server/chunks/string-CafUlmcI.js +355 -0
  90. package/build/server/chunks/string-CafUlmcI.js.map +1 -0
  91. package/build/server/chunks/user-B61vTdij.js +2078 -0
  92. package/build/server/chunks/user-B61vTdij.js.map +1 -0
  93. package/build/server/index.js +4 -3
  94. package/build/server/index.js.map +1 -1
  95. package/build/server/manifest.js +8 -8
  96. package/build/server/manifest.js.map +1 -1
  97. package/dist/api/acl.js +2 -2
  98. package/dist/api/metadata.js +3 -4
  99. package/dist/api/passkeys.js +1 -2
  100. package/dist/api/register.js +9 -10
  101. package/dist/api/session.js +1 -2
  102. package/dist/api/users.js +11 -12
  103. package/dist/auth.d.ts +1 -1
  104. package/dist/auth.js +1 -2
  105. package/dist/cli.js +2 -2
  106. package/dist/config.d.ts +74 -70
  107. package/dist/config.js +62 -57
  108. package/dist/index.d.ts +1 -1
  109. package/dist/index.js +1 -1
  110. package/dist/requests.d.ts +36 -2
  111. package/dist/requests.js +65 -7
  112. package/dist/routes.d.ts +1 -1
  113. package/dist/serve.d.ts +6 -1
  114. package/dist/serve.js +19 -1
  115. package/dist/sveltekit.d.ts +3 -3
  116. package/dist/sveltekit.js +11 -46
  117. package/package.json +1 -2
  118. package/routes/account/+page.svelte +4 -5
  119. package/svelte.config.js +1 -2
  120. package/web/hooks.server.ts +3 -17
  121. package/web/lib/FormDialog.svelte +4 -5
  122. package/web/lib/Logout.svelte +6 -2
  123. package/web/tsconfig.json +1 -1
  124. package/build/client/_app/immutable/chunks/B3bf7yrh.js.br +0 -0
  125. package/build/client/_app/immutable/chunks/B4IjTTLF.js.br +0 -0
  126. package/build/client/_app/immutable/chunks/B4IjTTLF.js.gz +0 -0
  127. package/build/client/_app/immutable/chunks/BeFE4kE2.js +0 -3
  128. package/build/client/_app/immutable/chunks/BeFE4kE2.js.br +0 -0
  129. package/build/client/_app/immutable/chunks/BeFE4kE2.js.gz +0 -0
  130. package/build/client/_app/immutable/chunks/CtT1TXOG.js +0 -1
  131. package/build/client/_app/immutable/chunks/CtT1TXOG.js.br +0 -0
  132. package/build/client/_app/immutable/chunks/CtT1TXOG.js.gz +0 -0
  133. package/build/client/_app/immutable/chunks/D5lcOOwR.js +0 -1
  134. package/build/client/_app/immutable/chunks/D5lcOOwR.js.br +0 -0
  135. package/build/client/_app/immutable/chunks/D5lcOOwR.js.gz +0 -0
  136. package/build/client/_app/immutable/chunks/DCs3KlJy.js +0 -1
  137. package/build/client/_app/immutable/chunks/DCs3KlJy.js.br +0 -0
  138. package/build/client/_app/immutable/chunks/DCs3KlJy.js.gz +0 -0
  139. package/build/client/_app/immutable/chunks/ct9jA5hl.js +0 -1
  140. package/build/client/_app/immutable/chunks/ct9jA5hl.js.br +0 -0
  141. package/build/client/_app/immutable/chunks/ct9jA5hl.js.gz +0 -0
  142. package/build/client/_app/immutable/chunks/rXU5YtEm.js +0 -1
  143. package/build/client/_app/immutable/chunks/rXU5YtEm.js.br +0 -0
  144. package/build/client/_app/immutable/chunks/rXU5YtEm.js.gz +0 -0
  145. package/build/client/_app/immutable/entry/app.VDao1I0a.js +0 -2
  146. package/build/client/_app/immutable/entry/app.VDao1I0a.js.br +0 -0
  147. package/build/client/_app/immutable/entry/app.VDao1I0a.js.gz +0 -0
  148. package/build/client/_app/immutable/entry/start.CqVn4hZK.js +0 -1
  149. package/build/client/_app/immutable/entry/start.CqVn4hZK.js.br +0 -0
  150. package/build/client/_app/immutable/entry/start.CqVn4hZK.js.gz +0 -0
  151. package/build/client/_app/immutable/nodes/0.BbGefPez.js.br +0 -0
  152. package/build/client/_app/immutable/nodes/0.BbGefPez.js.gz +0 -0
  153. package/build/client/_app/immutable/nodes/1.C3jvF6zj.js +0 -1
  154. package/build/client/_app/immutable/nodes/1.C3jvF6zj.js.br +0 -0
  155. package/build/client/_app/immutable/nodes/1.C3jvF6zj.js.gz +0 -0
  156. package/build/client/_app/immutable/nodes/2._Jmh03he.js.br +0 -0
  157. package/build/client/_app/immutable/nodes/2._Jmh03he.js.gz +0 -0
  158. package/build/client/_app/immutable/nodes/3.C1G23fTe.js +0 -1
  159. package/build/client/_app/immutable/nodes/3.C1G23fTe.js.br +0 -0
  160. package/build/client/_app/immutable/nodes/3.C1G23fTe.js.gz +0 -0
  161. package/build/client/_app/immutable/nodes/4.TQjMBeyV.js +0 -1
  162. package/build/client/_app/immutable/nodes/4.TQjMBeyV.js.br +0 -0
  163. package/build/client/_app/immutable/nodes/4.TQjMBeyV.js.gz +0 -0
  164. package/build/client/_app/immutable/nodes/5.SHyxFZfo.js +0 -1
  165. package/build/client/_app/immutable/nodes/5.SHyxFZfo.js.br +0 -0
  166. package/build/client/_app/immutable/nodes/5.SHyxFZfo.js.gz +0 -0
  167. package/build/client/_app/immutable/nodes/6.ikul5Bcl.js +0 -1
  168. package/build/client/_app/immutable/nodes/6.ikul5Bcl.js.br +0 -0
  169. package/build/client/_app/immutable/nodes/6.ikul5Bcl.js.gz +0 -0
  170. package/build/server/chunks/1-DffE3_iJ.js +0 -9
  171. package/build/server/chunks/3-D6wMMS06.js +0 -9
  172. package/build/server/chunks/3-D6wMMS06.js.map +0 -1
  173. package/build/server/chunks/4-BIBXJVxM.js +0 -9
  174. package/build/server/chunks/4-BIBXJVxM.js.map +0 -1
  175. package/build/server/chunks/5-DnTszr4V.js +0 -9
  176. package/build/server/chunks/5-DnTszr4V.js.map +0 -1
  177. package/build/server/chunks/6-Ls1UJLAz.js +0 -9
  178. package/build/server/chunks/6-Ls1UJLAz.js.map +0 -1
  179. package/build/server/chunks/Logout-CkwmxNTt.js.map +0 -1
  180. package/build/server/chunks/_page.svelte-CVJoQAAB.js.map +0 -1
  181. package/build/server/chunks/_page.svelte-D3kXcWlK.js.map +0 -1
  182. package/build/server/chunks/_page.svelte-DPdvFuWg.js +0 -12
  183. package/build/server/chunks/_page.svelte-whmO3TtB.js.map +0 -1
  184. package/build/server/chunks/client-C5BesWYV.js +0 -33
  185. package/build/server/chunks/client-C5BesWYV.js.map +0 -1
  186. package/build/server/chunks/error.svelte-Crm_85Km.js +0 -24
  187. package/build/server/chunks/error.svelte-Crm_85Km.js.map +0 -1
  188. package/build/server/chunks/exports-DeY8o0ws.js.map +0 -1
  189. package/build/server/chunks/hooks.server-DmgUjoZV.js +0 -17
  190. package/build/server/chunks/hooks.server-DmgUjoZV.js.map +0 -1
  191. package/build/server/chunks/user-DW-tjDe0.js.map +0 -1
@@ -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.CqVn4hZK.js",app:"_app/immutable/entry/app.VDao1I0a.js",imports:["_app/immutable/entry/start.CqVn4hZK.js","_app/immutable/chunks/BeFE4kE2.js","_app/immutable/chunks/D5lcOOwR.js","_app/immutable/chunks/B3bf7yrh.js","_app/immutable/chunks/DCs3KlJy.js","_app/immutable/entry/app.VDao1I0a.js","_app/immutable/chunks/B3bf7yrh.js","_app/immutable/chunks/D5lcOOwR.js","_app/immutable/chunks/DCs3KlJy.js","_app/immutable/chunks/DsnmJJEf.js","_app/immutable/chunks/ct9jA5hl.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
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-CUfr8UwD.js')),
16
- __memo(() => import('./chunks/1-DffE3_iJ.js')),
17
- __memo(() => import('./chunks/2-c1bljkMr.js')),
18
- __memo(() => import('./chunks/3-D6wMMS06.js')),
19
- __memo(() => import('./chunks/4-BIBXJVxM.js')),
20
- __memo(() => import('./chunks/5-DnTszr4V.js')),
21
- __memo(() => import('./chunks/6-Ls1UJLAz.js'))
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.CqVn4hZK.js\",app:\"_app/immutable/entry/app.VDao1I0a.js\",imports:[\"_app/immutable/entry/start.CqVn4hZK.js\",\"_app/immutable/chunks/BeFE4kE2.js\",\"_app/immutable/chunks/D5lcOOwR.js\",\"_app/immutable/chunks/B3bf7yrh.js\",\"_app/immutable/chunks/DCs3KlJy.js\",\"_app/immutable/entry/app.VDao1I0a.js\",\"_app/immutable/chunks/B3bf7yrh.js\",\"_app/immutable/chunks/D5lcOOwR.js\",\"_app/immutable/chunks/DCs3KlJy.js\",\"_app/immutable/chunks/DsnmJJEf.js\",\"_app/immutable/chunks/ct9jA5hl.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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"}
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: {
@@ -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, { message: 'API metadata is disabled' });
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
@@ -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',
@@ -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, { message: 'New user registration is disabled' });
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, { message: 'Generated UUID is already in use, please retry.' });
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, { message: 'New user registration is disabled' });
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, { message: 'Email already in use' });
42
+ error(409, 'Email already in use');
44
43
  const expectedChallenge = registrations.get(userId);
45
44
  if (!expectedChallenge)
46
- error(404, { message: 'No registration challenge found for this user' });
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, { message: 'Verification failed' }));
51
+ }).catch(() => error(400, 'Verification failed'));
53
52
  if (!verified || !registrationInfo)
54
- error(401, { message: 'Verification failed' });
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(e => error(500, { message: 'Failed to create passkey' + (config.debug ? `: ${e.message}` : '') }));
65
+ }).catch(withError('Failed to create passkey', 500));
67
66
  return await createSessionData(userId);
68
67
  }
69
68
  addRoute({
@@ -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, { message: 'No passkeys exists for this user' });
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, { message: 'No challenge' });
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, { message: 'Passkey does not belong to this user' });
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, { message: 'Verification failed' });
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, { message: 'You can not authorize sensitive actions with a newly created passkey' });
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, { message: 'No registration challenge found for this user' });
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, { message: 'Verification failed' });
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, { message: 'Invalid request body' });
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, { message: 'Email already verified' });
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, { message: 'Email already verified' });
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 { serve } from './serve.js';
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 serve({
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 { levelText } from 'logzen';
2
- import { type PartialRecursive } from 'utilium';
1
+ import { type DeepRequired } from 'utilium';
3
2
  import * as z from 'zod';
4
- export interface Config extends Record<string, unknown> {
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 PartialRecursive<Config>, z.infer<typeof FileSchema> {
121
+ export interface File extends z.infer<typeof FileSchema> {
118
122
  }
119
- export declare function addConfigDefaults(other: PartialRecursive<Config>, _target?: Record<string, any>): void;
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: PartialRecursive<Config>): void;
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: PartialRecursive<Config>, global?: boolean): void;
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: PartialRecursive<Config>): void;
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
- allow_new_users: z.boolean(),
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
@@ -1,3 +1,3 @@
1
1
  export * as auth from './auth.js';
2
- export * as db from './database.js';
3
2
  export * as config from './config.js';
3
+ export * as db from './database.js';
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export * as auth from './auth.js';
2
- export * as db from './database.js';
3
2
  export * as config from './config.js';
3
+ export * as db from './database.js';