kempo 4.9.2 → 4.9.3

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 (206) hide show
  1. package/dist/admin/component-overrides.js +1 -1
  2. package/dist/admin/components/AddGroupControl.js +1 -1
  3. package/dist/admin/components/AdminTableControl.js +1 -1
  4. package/dist/admin/components/ClearExpiredSessionsControl.js +1 -1
  5. package/dist/admin/components/Dashboard.js +1 -1
  6. package/dist/admin/components/EmailTemplates.js +1 -1
  7. package/dist/admin/components/Emails.js +1 -1
  8. package/dist/admin/components/FragmentEditor.js +1 -1
  9. package/dist/admin/components/GlobalContentEditor.js +1 -1
  10. package/dist/admin/components/GroupDeleteSelected.js +1 -1
  11. package/dist/admin/components/GroupRemoveRecord.js +1 -1
  12. package/dist/admin/components/Menus.js +1 -1
  13. package/dist/admin/components/Monaco.js +1 -1
  14. package/dist/admin/components/PageEditor.js +1 -1
  15. package/dist/admin/components/TableRowDelete.js +1 -1
  16. package/dist/admin/components/TableRowLink.js +1 -1
  17. package/dist/admin/components/TemplateEditor.js +1 -1
  18. package/dist/admin/components/Updates.js +10 -9
  19. package/dist/admin/components/Updates.js.map +1 -1
  20. package/dist/admin/components/ValueEditor.js +1 -1
  21. package/dist/admin/components/dashboardLayout.js +1 -1
  22. package/dist/admin/components/settings/AdminSettings.js +1 -1
  23. package/dist/admin/components/settings/BooleanSetting.js +1 -1
  24. package/dist/admin/components/settings/JsonSetting.js +1 -1
  25. package/dist/admin/components/settings/NumberSetting.js +1 -1
  26. package/dist/admin/components/settings/SecretSetting.js +1 -1
  27. package/dist/admin/components/settings/Setting.js +1 -1
  28. package/dist/admin/components/settings/SettingEditor.js +1 -1
  29. package/dist/admin/components/settings/SettingsPanel.js +1 -1
  30. package/dist/admin/components/settings/StringSetting.js +1 -1
  31. package/dist/admin/components/settings/humanize.js +1 -1
  32. package/dist/admin/components/tableControls/AddMember.js +1 -1
  33. package/dist/admin/components/tableControls/AddPermission.js +1 -1
  34. package/dist/admin/components/tableControls/ExtensionDetails.js +1 -1
  35. package/dist/admin/components/tableControls/InstallExtension.js +1 -1
  36. package/dist/admin/components/tableControls/ToggleExtension.js +1 -1
  37. package/dist/admin/components/tableControls/UninstallExtension.js +1 -1
  38. package/dist/admin/components/widgets/Content.js +1 -1
  39. package/dist/admin/components/widgets/Extensions.js +1 -1
  40. package/dist/admin/components/widgets/Notifications.js +1 -1
  41. package/dist/admin/components/widgets/Pages.js +1 -1
  42. package/dist/admin/components/widgets/Users.js +1 -1
  43. package/dist/admin/init.js +1 -1
  44. package/dist/kempo/api/admin-globals/DELETE.js +1 -1
  45. package/dist/kempo/api/admin-globals/GET.js +1 -1
  46. package/dist/kempo/api/admin-globals/POST.js +1 -1
  47. package/dist/kempo/api/admin-globals/[id]/GET.js +1 -1
  48. package/dist/kempo/api/admin-globals/[id]/PUT.js +1 -1
  49. package/dist/kempo/api/admin-globals/[id]/disable/PUT.js +1 -1
  50. package/dist/kempo/api/admin-globals/[id]/enable/PUT.js +1 -1
  51. package/dist/kempo/api/auth/change-password/POST.js +1 -1
  52. package/dist/kempo/api/auth/login/email/POST.js +1 -1
  53. package/dist/kempo/api/auth/logout/POST.js +1 -1
  54. package/dist/kempo/api/auth/register/email/POST.js +1 -1
  55. package/dist/kempo/api/auth/reset-password/POST.js +1 -1
  56. package/dist/kempo/api/auth/session/GET.js +1 -1
  57. package/dist/kempo/api/auth/verify-email/POST.js +1 -1
  58. package/dist/kempo/api/dashboard/widgets/GET.js +1 -1
  59. package/dist/kempo/api/email-templates/GET.js +1 -1
  60. package/dist/kempo/api/email-templates/file/DELETE.js +1 -1
  61. package/dist/kempo/api/email-templates/file/GET.js +1 -1
  62. package/dist/kempo/api/email-templates/file/PUT.js +1 -1
  63. package/dist/kempo/api/email-templates/preview/GET.js +1 -1
  64. package/dist/kempo/api/emails/GET.js +1 -1
  65. package/dist/kempo/api/emails/[id]/GET.js +1 -1
  66. package/dist/kempo/api/emails/[id]/retry/POST.js +1 -1
  67. package/dist/kempo/api/emails/test/POST.js +1 -1
  68. package/dist/kempo/api/extensions/DELETE.js +1 -1
  69. package/dist/kempo/api/extensions/GET.js +1 -1
  70. package/dist/kempo/api/extensions/POST.js +1 -1
  71. package/dist/kempo/api/extensions/[name]/dependents/GET.js +1 -1
  72. package/dist/kempo/api/extensions/[name]/disable/POST.js +1 -1
  73. package/dist/kempo/api/extensions/[name]/enable/POST.js +1 -1
  74. package/dist/kempo/api/extensions/[name]/requirements/GET.js +1 -1
  75. package/dist/kempo/api/extensions/[name]/update/POST.js +1 -1
  76. package/dist/kempo/api/extensions/[name]/update-check/GET.js +1 -1
  77. package/dist/kempo/api/extensions/available/GET.js +1 -1
  78. package/dist/kempo/api/extensions/known/GET.js +1 -1
  79. package/dist/kempo/api/extensions/rating/PUT.js +1 -1
  80. package/dist/kempo/api/forgot-password/POST.js +1 -1
  81. package/dist/kempo/api/fragments/DELETE.js +1 -1
  82. package/dist/kempo/api/fragments/GET.js +1 -1
  83. package/dist/kempo/api/fragments/POST.js +1 -1
  84. package/dist/kempo/api/fragments/disable/PUT.js +1 -1
  85. package/dist/kempo/api/fragments/enable/PUT.js +1 -1
  86. package/dist/kempo/api/fragments/file/GET.js +1 -1
  87. package/dist/kempo/api/fragments/file/PATCH.js +1 -1
  88. package/dist/kempo/api/fragments/file/PUT.js +1 -1
  89. package/dist/kempo/api/fragments/lock/PUT.js +1 -1
  90. package/dist/kempo/api/globals/DELETE.js +1 -1
  91. package/dist/kempo/api/globals/GET.js +1 -1
  92. package/dist/kempo/api/globals/POST.js +1 -1
  93. package/dist/kempo/api/globals/disable/PUT.js +1 -1
  94. package/dist/kempo/api/globals/enable/PUT.js +1 -1
  95. package/dist/kempo/api/globals/entry/GET.js +1 -1
  96. package/dist/kempo/api/globals/entry/PUT.js +1 -1
  97. package/dist/kempo/api/globals/lock/PUT.js +1 -1
  98. package/dist/kempo/api/groups/DELETE.js +1 -1
  99. package/dist/kempo/api/groups/GET.js +1 -1
  100. package/dist/kempo/api/groups/PATCH.js +1 -1
  101. package/dist/kempo/api/groups/POST.js +1 -1
  102. package/dist/kempo/api/groups/[name]/GET.js +1 -1
  103. package/dist/kempo/api/groups/[name]/members/DELETE.js +1 -1
  104. package/dist/kempo/api/groups/[name]/members/GET.js +1 -1
  105. package/dist/kempo/api/groups/[name]/members/POST.js +1 -1
  106. package/dist/kempo/api/groups/[name]/permissions/DELETE.js +1 -1
  107. package/dist/kempo/api/groups/[name]/permissions/GET.js +1 -1
  108. package/dist/kempo/api/groups/[name]/permissions/POST.js +1 -1
  109. package/dist/kempo/api/menus/DELETE.js +1 -1
  110. package/dist/kempo/api/menus/GET.js +1 -1
  111. package/dist/kempo/api/menus/POST.js +1 -1
  112. package/dist/kempo/api/menus/adopt/PUT.js +1 -1
  113. package/dist/kempo/api/menus/items/DELETE.js +1 -1
  114. package/dist/kempo/api/menus/items/POST.js +1 -1
  115. package/dist/kempo/api/menus/items/enabled/PUT.js +1 -1
  116. package/dist/kempo/api/menus/items/order/PUT.js +1 -1
  117. package/dist/kempo/api/menus/location/PUT.js +1 -1
  118. package/dist/kempo/api/notifications/GET.js +1 -1
  119. package/dist/kempo/api/notifications/[id]/DELETE.js +1 -1
  120. package/dist/kempo/api/notifications/[id]/handled/POST.js +1 -1
  121. package/dist/kempo/api/notifications/[id]/read/POST.js +1 -1
  122. package/dist/kempo/api/notifications/count/GET.js +1 -1
  123. package/dist/kempo/api/notifications/read-all/POST.js +1 -1
  124. package/dist/kempo/api/pages/DELETE.js +1 -1
  125. package/dist/kempo/api/pages/GET.js +1 -1
  126. package/dist/kempo/api/pages/POST.js +1 -1
  127. package/dist/kempo/api/pages/directories/GET.js +1 -1
  128. package/dist/kempo/api/pages/disable/PUT.js +1 -1
  129. package/dist/kempo/api/pages/enable/PUT.js +1 -1
  130. package/dist/kempo/api/pages/file/GET.js +1 -1
  131. package/dist/kempo/api/pages/file/PATCH.js +1 -1
  132. package/dist/kempo/api/pages/file/PUT.js +1 -1
  133. package/dist/kempo/api/pages/lock/PUT.js +1 -1
  134. package/dist/kempo/api/pages/rescan/POST.js +1 -1
  135. package/dist/kempo/api/pages/search/GET.js +1 -1
  136. package/dist/kempo/api/pages/templates/GET.js +1 -1
  137. package/dist/kempo/api/permissions/DELETE.js +1 -1
  138. package/dist/kempo/api/permissions/GET.js +1 -1
  139. package/dist/kempo/api/permissions/PATCH.js +1 -1
  140. package/dist/kempo/api/permissions/POST.js +1 -1
  141. package/dist/kempo/api/realtime/WS.js +1 -1
  142. package/dist/kempo/api/realtime/connections/GET.js +1 -1
  143. package/dist/kempo/api/settings/[owner]/GET.js +1 -1
  144. package/dist/kempo/api/settings/[owner]/[name]/DELETE.js +1 -1
  145. package/dist/kempo/api/settings/[owner]/[name]/GET.js +1 -1
  146. package/dist/kempo/api/settings/[owner]/[name]/POST.js +1 -1
  147. package/dist/kempo/api/settings/public/GET.js +1 -1
  148. package/dist/kempo/api/templates/DELETE.js +1 -1
  149. package/dist/kempo/api/templates/GET.js +1 -1
  150. package/dist/kempo/api/templates/POST.js +1 -1
  151. package/dist/kempo/api/templates/disable/PUT.js +1 -1
  152. package/dist/kempo/api/templates/enable/PUT.js +1 -1
  153. package/dist/kempo/api/templates/file/GET.js +1 -1
  154. package/dist/kempo/api/templates/file/PATCH.js +1 -1
  155. package/dist/kempo/api/templates/file/PUT.js +1 -1
  156. package/dist/kempo/api/templates/lock/PUT.js +1 -1
  157. package/dist/kempo/api/updates/GET.js +1 -1
  158. package/dist/kempo/api/updates/apply/POST.js +1 -1
  159. package/dist/kempo/api/updates/check/POST.js +1 -1
  160. package/dist/kempo/api/updates/discard/POST.js +1 -1
  161. package/dist/kempo/api/updates/prepare/POST.js +1 -1
  162. package/dist/kempo/api/updates/rollback/POST.js +1 -1
  163. package/dist/kempo/api/user/DELETE.js +1 -1
  164. package/dist/kempo/api/user/GET.js +1 -1
  165. package/dist/kempo/api/user/PATCH.js +1 -1
  166. package/dist/kempo/api/user/[userid]/GET.js +1 -1
  167. package/dist/kempo/api/user/[userid]/groups/DELETE.js +1 -1
  168. package/dist/kempo/api/user/[userid]/groups/GET.js +1 -1
  169. package/dist/kempo/api/user/[userid]/groups/POST.js +1 -1
  170. package/dist/kempo/api/user/[userid]/name/GET.js +1 -1
  171. package/dist/kempo/api/user/[userid]/permissions/GET.js +1 -1
  172. package/dist/kempo/api/user/[userid]/permissions/all/GET.js +1 -1
  173. package/dist/kempo/api/user/[userid]/permissions/list/GET.js +1 -1
  174. package/dist/kempo/api/user/[userid]/permissions/some/GET.js +1 -1
  175. package/dist/kempo/api/user/[userid]/sessions/DELETE.js +1 -1
  176. package/dist/kempo/api/user/[userid]/sessions/GET.js +1 -1
  177. package/dist/kempo/api/user/[userid]/sessions/expired/DELETE.js +1 -1
  178. package/dist/kempo/api/user/create/POST.js +1 -1
  179. package/dist/kempo/api/user/search/GET.js +1 -1
  180. package/dist/kempo/components/AdminNavFooter.js +1 -1
  181. package/dist/kempo/components/DashboardWidget.js +1 -1
  182. package/dist/kempo/components/Login.js +1 -1
  183. package/dist/kempo/components/LogoutBtn.js +1 -1
  184. package/dist/kempo/components/Menu.js +1 -1
  185. package/dist/kempo/components/NotificationBell.js +1 -1
  186. package/dist/kempo/components/NotificationList.js +1 -1
  187. package/dist/kempo/components/Permission.js +1 -1
  188. package/dist/kempo/components/PermissionTarget.js +1 -1
  189. package/dist/kempo/components/Register.js +1 -1
  190. package/dist/kempo/components/Role.js +1 -1
  191. package/dist/kempo/components/UserCreatedAt.js +1 -1
  192. package/dist/kempo/components/UserDisplayName.js +1 -1
  193. package/dist/kempo/components/UserEmail.js +1 -1
  194. package/dist/kempo/components/UserEmailVerified.js +1 -1
  195. package/dist/kempo/components/UserName.js +1 -1
  196. package/dist/kempo/fetch.js +1 -1
  197. package/dist/kempo/realtime.js +1 -1
  198. package/dist/kempo/sdk.js +1 -1
  199. package/dist/kempo/utils/safeNext.js +1 -1
  200. package/package.json +1 -1
  201. package/server/utils/updates/applyStagedUpdate.js +8 -3
  202. package/server/utils/updates/goBackPlan.js +34 -0
  203. package/server/utils/updates/prepareUpdate.js +1 -1
  204. package/server/utils/updates/releaseStatus.js +8 -5
  205. package/server/utils/updates/rollbackUpdate.js +14 -21
  206. package/server/utils/updates/siteLayout.js +17 -2
@@ -2,4 +2,4 @@ import e from"/kempo/components/DashboardWidget.js";import{html as t}from"/kempo
2
2
  <div class="h1 m0">${this.total}</div>
3
3
  <div class="tc-muted">${1===this.total?"User":"Users"}</div>
4
4
  `}}customElements.define("k-widget-users",i);
5
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\admin\components\widgets\Users.js.map
5
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\admin\components\widgets\Users.js.map
@@ -1,2 +1,2 @@
1
1
  window.kempo={pathsToIcons:["/admin/icons","/kempo/icons","/kempo-ui/icons"],monacoUrl:"/monaco-editor",lexicalUrl:"/kempo/vendor/lexical"},window.litDisableBundleWarning=!0,import("/kempo-ui/components/Import.js"),import("/kempo-ui/components/Aside.js"),import("/kempo-ui/components/Main.js");
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\admin\init.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\admin\init.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../server/utils/admin-global-content/deleteAdminGlobalContent.js";export default async(r,o)=>{const t=r.cookies.session_token,[n,i]=await s(t,"system:globals:delete");if(n)return o.status(n.code).json({error:n.msg});if(!i)return o.status(403).json({error:"Insufficient permissions"});const{ids:a}=r.body,[m,l]=await e({ids:a});if(m)return o.status(m.code).json({error:m.msg});o.json(l)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\DELETE.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\DELETE.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../server/utils/admin-global-content/listAdminGlobalContent.js";export default async(o,t)=>{const e=o.cookies.session_token,[n,i]=await s(e,"system:globals:read");if(n)return t.status(n.code).json({error:n.msg});if(!i)return t.status(403).json({error:"Insufficient permissions"});const[a,m]=await r();if(a)return t.status(a.code).json({error:a.msg});t.json(m)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import r from"../../../../server/utils/permissions/currentUserHasPermission.js";import s from"../../../../server/utils/admin-global-content/createAdminGlobalContent.js";export default async(o,e)=>{const t=o.cookies.session_token,[n,i]=await r(t,"system:globals:create");if(n)return e.status(n.code).json({error:n.msg});if(!i)return e.status(403).json({error:"Insufficient permissions"});const{name:a,location:m,priority:c,owner:u,markup:l}=o.body,[p,f]=await s({name:a,location:m,priority:c,owner:u,markup:l});if(p)return e.status(p.code).json({error:p.msg});e.json(f)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../server/utils/admin-global-content/getAdminGlobalContent.js";export default async(e,o)=>{const t=e.cookies.session_token,[n,i]=await s(t,"system:globals:read");if(n)return o.status(n.code).json({error:n.msg});if(!i)return o.status(403).json({error:"Insufficient permissions"});const a=e.params.id,[m,u]=await r({id:a});if(m)return o.status(m.code).json({error:m.msg});o.json(u)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../server/utils/admin-global-content/updateAdminGlobalContent.js";export default async(o,t)=>{const e=o.cookies.session_token,[i,n]=await s(e,"system:globals:update");if(i)return t.status(i.code).json({error:i.msg});if(!n)return t.status(403).json({error:"Insufficient permissions"});const a=o.params.id,{name:m,location:u,priority:p,markup:c}=o.body,[l,d]=await r({id:a,name:m,location:u,priority:p,markup:c});if(l)return t.status(l.code).json({error:l.msg});t.json(d)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/admin-global-content/disableAdminGlobalContent.js";export default async(e,o)=>{const t=e.cookies.session_token,[i,n]=await s(t,"system:globals:update");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"Insufficient permissions"});const a=e.params.id,[m,u]=await r({id:a});if(m)return o.status(m.code).json({error:m.msg});o.json(u)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\disable\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\disable\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/admin-global-content/enableAdminGlobalContent.js";export default async(e,o)=>{const t=e.cookies.session_token,[n,i]=await s(t,"system:globals:update");if(n)return o.status(n.code).json({error:n.msg});if(!i)return o.status(403).json({error:"Insufficient permissions"});const a=e.params.id,[m,u]=await r({id:a});if(m)return o.status(m.code).json({error:m.msg});o.json(u)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\enable\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\enable\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/auth/changePassword.js";import r from"../../../../../server/utils/auth/getSession.js";import e from"bcrypt";export default async(t,o)=>{try{const a=t.cookies.session_token,[n,u]=await r({token:a});if(n||!u||!u.user)return o.status(401).json({error:"Not authenticated"});const{currentPassword:c,newPassword:i}=t.body;if(!c||!i)return o.status(400).json({error:"Current password and new password are required"});if(i.length<8)return o.status(400).json({error:"New password must be at least 8 characters"});if(!await e.compare(c,u.user.passwordHash))return o.status(400).json({error:"Current password is incorrect"});const[d,w]=await s(u.user.id,i);if(d)return o.status(d.code).json({error:d.msg});o.json({success:!0,message:"Password changed successfully"})}catch(s){console.error("Change password error:",s),o.status(500).json({error:s.message||"Failed to change password"})}};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\auth\change-password\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\change-password\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import e from"../../../../../../server/utils/auth/loginEmail.js";export default async(r,s)=>{try{const{email:o,password:t}=r.body,[n,a]=await e(o,t);if(n)return s.status(n.code).json({error:n.msg});s.cookie("session_token",a.sessionToken,{httpOnly:!0,secure:"production"===process.env.NODE_ENV,sameSite:"lax",path:"/",maxAge:a.expiresAt.getTime()-Date.now()}),s.json({user:a.user})}catch(e){console.error("Login error:",e),s.status(500).json({error:"Internal server error"})}};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\auth\login\email\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\login\email\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import e from"../../../../../server/utils/auth/logout.js";export default async(t,s)=>{try{const o=t.cookies.session_token,[r,a]=await e({token:o});if(r)return s.status(r.code).json({error:r.msg});s.setHeader("Set-Cookie","session_token=; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=0"),s.json(a)}catch(e){s.status(500).json({error:e.message})}};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\auth\logout\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\logout\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import e from"../../../../../../server/utils/auth/registerEmail.js";export default async(r,s)=>{try{const{email:o,password:t,name:i}=r.body,[a,n]=await e({email:o,password:t,name:i});if(a)return s.status(a.code).json({error:a.msg});if(n.requiresVerification)return s.json({user:n.user,requiresVerification:n.requiresVerification});s.cookie("session_token",n.sessionToken,{httpOnly:!0,secure:"production"===process.env.NODE_ENV,sameSite:"lax",path:"/",maxAge:n.expiresAt.getTime()-Date.now()}),s.json({user:n.user})}catch(e){console.error("Registration error:",e),s.status(500).json({error:"Internal server error"})}};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\auth\register\email\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\register\email\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/auth/resetPassword.js";import r from"../../../../../server/utils/auth/loginEmail.js";import e from"../../../../../server/db/index.js";import{user as o}from"../../../../../server/db/schema.js";import{eq as t}from"drizzle-orm";export default async(a,n)=>{try{const{token:i,newPassword:u,logoutAll:l=!1}=a.body;console.log("Password reset request - Token:",i);const[d,m]=await s({token:i,password:u,logoutAll:l});if(d)return n.status(d.code).json({error:d.msg});const c=await e.select().from(o).where(t(o.id,m.userId)).limit(1);if(0===c.length)return n.status(500).json({error:"User not found after password reset"});const[p,f]=await r(c[0].email,u);if(p)return n.status(p.code).json({error:p.msg});n.cookie("session_token",f.sessionToken,{httpOnly:!0,secure:"production"===process.env.NODE_ENV,sameSite:"lax",path:"/",maxAge:24*(f.sessionDurationDays||7)*60*60*1e3}),n.json({success:!0,user:f.user})}catch(s){console.error("Password reset error:",s),n.status(500).json({error:"Failed to reset password"})}};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\auth\reset-password\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\reset-password\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/auth/getSession.js";export default async(e,o)=>{try{const r=e.cookies.session_token,[n,t]=await s({token:r});if(n||!t||!t.user)return o.json({session:null,user:null});const{passwordHash:i,...u}=t.user;o.json({session:t.session,user:u})}catch(s){console.log("Session API error:",s),o.status(500).json({error:s.message})}};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\auth\session\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\session\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import e from"crypto";import r from"../../../../../server/utils/auth/verifyEmail.js";import t from"../../../../../server/db/index.js";import{session as s,user as o}from"../../../../../server/db/schema.js";import{eq as i}from"drizzle-orm";import n from"../../../../../server/utils/settings/getSetting.js";export default async(a,m)=>{try{const{token:d}=a.body,[c,u]=await r({token:d});if(c)return m.status(c.code).json({error:c.msg});const l=await t.select().from(o).where(i(o.id,u.userId)).limit(1);if(0===l.length)return m.status(500).json({error:"User not found"});const f=e.randomBytes(32).toString("hex"),[p,j]=await n("system","session_duration_days",7);if(p)return m.status(p.code).json({error:p.msg});const v=new Date(Date.now()+24*j*60*60*1e3),y=new Date;await t.insert(s).values({token:f,userId:u.userId,expiresAt:v,createdAt:y}),m.cookie("session_token",f,{httpOnly:!0,secure:"production"===process.env.NODE_ENV,sameSite:"lax",path:"/",maxAge:24*j*60*60*1e3}),m.json({success:!0,user:{id:l[0].id,email:l[0].email,name:l[0].name,emailVerified:l[0].emailVerified}})}catch(e){console.error("Email verification error:",e),m.status(500).json({error:"Internal server error"})}};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\auth\verify-email\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\verify-email\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/auth/getSession.js";import e from"../../../../../server/utils/dashboard/listDashboardWidgets.js";export default async(r,t)=>{const[o,i]=await s({token:r.cookies.session_token});if(o)return t.status(500===o.code?500:401).json({error:500===o.code?o.msg:"Authentication required"});const[a,n]=await e({userId:i.user.id});if(a)return t.status(a.code).json({error:a.msg});t.json(n)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\dashboard\widgets\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\dashboard\widgets\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../server/utils/email/listEmailTemplates.js";export default async(r,t)=>{const[o,i]=await s(r.cookies.session_token,"system:pages:read");if(o)return t.status(o.code).json({error:o.msg});if(!i)return t.status(403).json({error:"Insufficient permissions"});const[n,a]=await e({owner:r.query.owner||null});if(n)return t.status(n.code).json({error:n.msg});t.json({templates:a})};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\email-templates\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\email-templates\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/email/resetEmailTemplate.js";export default async(r,t)=>{const[o,i]=await s(r.cookies.session_token,"system:pages:update");if(o)return t.status(o.code).json({error:o.msg});if(!i)return t.status(403).json({error:"Insufficient permissions"});const[n,a]=await e({template:r.body?.template});if(n)return t.status(n.code).json({error:n.msg});t.json(a)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\email-templates\file\DELETE.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\email-templates\file\DELETE.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/email/readEmailTemplate.js";export default async(r,t)=>{const[o,i]=await s(r.cookies.session_token,"system:pages:read");if(o)return t.status(o.code).json({error:o.msg});if(!i)return t.status(403).json({error:"Insufficient permissions"});const[a,n]=await e({template:r.query.template});if(a)return t.status(a.code).json({error:a.msg});t.json(n)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\email-templates\file\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\email-templates\file\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/email/saveEmailTemplate.js";export default async(r,t)=>{const[o,i]=await s(r.cookies.session_token,"system:pages:update");if(o)return t.status(o.code).json({error:o.msg});if(!i)return t.status(403).json({error:"Insufficient permissions"});const[a,n]=await e({template:r.body?.template,source:r.body?.source});if(a)return t.status(a.code).json({error:a.msg});t.json(n)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\email-templates\file\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\email-templates\file\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/email/renderEmailTemplate.js";export default async(r,t)=>{const[o,i]=await s(r.cookies.session_token,"system:pages:read");if(o)return t.status(o.code).json({error:o.msg});if(!i)return t.status(403).json({error:"Insufficient permissions"});const[a,n]=await e({template:r.query.template,data:{}});if(a)return t.status(a.code).json({error:a.msg});t.type("html").send(n)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\email-templates\preview\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\email-templates\preview\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../server/utils/email/listEmails.js";export default async(r,t)=>{const[i,o]=await s(r.cookies.session_token,"system:emails:read");if(i)return t.status(i.code).json({error:i.msg});if(!o)return t.status(403).json({error:"Insufficient permissions"});const{status:a,type:n,search:m,limit:u,offset:f}=r.query,[c,l]=await e({status:a,type:n,search:m,limit:u,offset:f});if(c)return t.status(c.code).json({error:c.msg});t.json(l)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\emails\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\emails\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../server/utils/email/getEmail.js";export default async(e,t)=>{const[i,o]=await s(e.cookies.session_token,"system:emails:read");if(i)return t.status(i.code).json({error:i.msg});if(!o)return t.status(403).json({error:"Insufficient permissions"});const[n,a]=await r(e.params.id);if(n)return t.status(n.code).json({error:n.msg});t.json(a)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\emails\[id]\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\emails\[id]\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/email/retryEmail.js";export default async(e,o)=>{const[t,i]=await s(e.cookies.session_token,"system:emails:manage");if(t)return o.status(t.code).json({error:t.msg});if(!i)return o.status(403).json({error:"Insufficient permissions"});const[n,a]=await r(e.params.id);if(n)return 502===n.code||503===n.code?o.json({sent:!1,error:n.msg}):o.status(n.code).json({error:n.msg});o.json({sent:!0,...a})};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\emails\[id]\retry\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\emails\[id]\retry\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/email/sendEmail.js";import t from"../../../../../server/utils/email/isValidSender.js";export default async(r,i)=>{const[o,n]=await s(r.cookies.session_token,"system:emails:manage");if(o)return i.status(o.code).json({error:o.msg});if(!n)return i.status(403).json({error:"Insufficient permissions"});const a=String(r.body?.to??"").trim();if(!t(a)||a.includes("<"))return i.status(400).json({error:"Enter an email address to send the test to"});const[m,l]=await e({to:a,subject:"A test email from Kempo",html:"<p>This is a test email. If you can read it, sending email works.</p>",template:"test"});if(m)return i.json({sent:!1,error:m.msg,emailId:m.emailId});i.json({sent:!0,...l})};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\emails\test\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\emails\test\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../server/utils/extensions/uninstallExtensionTree.js";export default async(n,t)=>{const r=n.cookies.session_token,[o,i]=await s(r,"system:extensions:uninstall");if(o)return t.status(o.code).json({error:o.msg});if(!i)return t.status(403).json({error:"Insufficient permissions"});const{name:a,purgeData:u,cascade:c}=n.body,[d,m]=await e({name:a,purgeData:!0===u,cascade:!0===c});if(d)return t.status(d.code).json({error:d.msg,dependents:d.dependents,uninstalled:d.uninstalled});t.json(m)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\DELETE.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\DELETE.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../server/utils/extensions/listExtensions.js";export default async(r,t)=>{const o=r.cookies.session_token,[i,n]=await s(o,"system:extensions:read");if(i)return t.status(i.code).json({error:i.msg});if(!n)return t.status(403).json({error:"Insufficient permissions"});const a=parseInt(r.query.limit)||50,u=parseInt(r.query.offset)||0,[f,m]=await e({limit:a,offset:u});if(f)return t.status(f.code).json({error:f.msg});t.json(m)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import e from"../../../../server/utils/permissions/currentUserHasPermission.js";export default async(s,t)=>{const i=s.cookies.session_token,[n,r]=await e(i,"system:extensions:install");if(n)return t.status(n.code).json({error:n.msg});if(!r)return t.status(403).json({error:"Insufficient permissions"});const{name:a,withDependencies:o}=s.body||{},{default:l}=await(import("../../../../server/utils/extensions/getSiteMarketplaceClient.js")),{default:u}=await(import("../../../../server/utils/extensions/getSiteInstallId.js")),{default:d}=await(import("../../../../server/utils/extensions/installFromCatalog.js")),[,m]=await u(),[c,f]=await d({name:a,withDependencies:!0===o,client:await l(),installId:m});if(c)return t.status(c.code).json({error:c.msg,needs:c.needs,installed:c.installed});t.json(f)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import e from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import s from"../../../../../../server/utils/extensions/getDependentTree.js";export default async(r,n)=>{const t=r.cookies.session_token,[i,o]=await e(t,"system:extensions:manage");if(i)return n.status(i.code).json({error:i.msg});if(!o)return n.status(403).json({error:"Insufficient permissions"});const a=await s(r.params.name,{includeDisabled:"true"===r.query.includeDisabled});n.json({dependents:a})};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\dependents\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\dependents\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../../server/utils/extensions/disableExtensionTree.js";export default async(r,n)=>{const t=r.cookies.session_token,[o,i]=await s(t,"system:extensions:manage");if(o)return n.status(o.code).json({error:o.msg});if(!i)return n.status(403).json({error:"Insufficient permissions"});const a=r.params.name,[m,c]=await e({name:a,cascade:!0===r.body?.cascade});if(m)return n.status(m.code).json({error:m.msg,dependents:m.dependents});n.json(c)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\disable\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\disable\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../../server/utils/extensions/enableExtensionTree.js";export default async(r,n)=>{const i=r.cookies.session_token,[t,o]=await s(i,"system:extensions:manage");if(t)return n.status(t.code).json({error:t.msg});if(!o)return n.status(403).json({error:"Insufficient permissions"});const a=r.params.name,[m,u]=await e({name:a,cascade:!0===r.body?.cascade});if(m)return n.status(m.code).json({error:m.msg,requirements:m.requirements,missing:m.missing});n.json(u)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\enable\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\enable\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../../server/utils/extensions/getRequirementTree.js";export default async(r,o)=>{const t=r.cookies.session_token,[n,i]=await s(t,"system:extensions:manage");return n?o.status(n.code).json({error:n.msg}):i?void o.json(await e(r.params.name)):o.status(403).json({error:"Insufficient permissions"})};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\requirements\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\requirements\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../../server/utils/extensions/updateExtension.js";export default async(r,n)=>{const o=r.cookies.session_token,[t,i]=await s(o,"system:extensions:manage");if(t)return n.status(t.code).json({error:t.msg});if(!i)return n.status(403).json({error:"Insufficient permissions"});const a=r.params.name,m=r.body?.version||"latest",[u,c]=await e({name:a,version:m});if(u)return n.status(u.code).json({error:u.msg});n.json(c)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\update\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\update\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../../server/utils/extensions/checkExtensionUpdate.js";export default async(r,n)=>{const t=r.cookies.session_token,[o,i]=await s(t,"system:extensions:manage");if(o)return n.status(o.code).json({error:o.msg});if(!i)return n.status(403).json({error:"Insufficient permissions"});const a=r.params.name,[m,u]=await e({name:a});if(m)return n.status(m.code).json({error:m.msg});n.json(u)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\update-check\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\update-check\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import{readFile as e}from"fs/promises";import{existsSync as o}from"fs";import{join as t}from"path";export default async(r,n)=>{const i=r.cookies.session_token,[a,c]=await s(i,"system:extensions:read");if(a)return n.status(a.code).json({error:a.msg});if(!c)return n.status(403).json({error:"Insufficient permissions"});const p=JSON.parse(await e(t(process.cwd(),"package.json"),"utf-8")),m={...p.dependencies,...p.devDependencies},f=t(process.cwd(),"node_modules"),u=[];for(const[s]of Object.entries(m))try{if(!o(t(f,s,"kempo-config.json")))continue;const r=JSON.parse(await e(t(f,s,"package.json"),"utf-8"));u.push({name:s,version:r.version,description:r.description||"",author:("object"==typeof r.author?r.author?.name:r.author)||""})}catch{}n.json({items:u,total:u.length})};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\available\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\available\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import e from"../../../../../server/utils/permissions/currentUserHasPermission.js";import s from"../../../../../server/utils/extensions/getSiteMarketplaceClient.js";import t from"../../../../../server/utils/extensions/getSiteInstallId.js";import r from"../../../../../server/utils/extensions/getExtension.js";import n from"../../../../../server/db/index.js";import{extension as i}from"../../../../../server/db/schema.js";export default async(o,a)=>{const l=o.cookies.session_token,[m,u]=await e(l,"system:extensions:read");if(m)return a.status(m.code).json({error:m.msg});if(!u)return a.status(403).json({error:"Insufficient permissions"});const c=await s(),{name:f,search:d,sort:j,limit:p,offset:g}=o.query;if(f){const[e,s]=await c.details(f);if(e)return a.status(e.code).json({error:e.msg});const[,n]=await r({name:f});let i=null;if(n){const[,e]=await t(),[,s]=e?await c.siteRating({installId:e,extension:f}):[null,null];i=s?.rating??null}return a.json({item:s,local:n?{installed:!0,version:n.version,enabled:n.enabled}:{installed:!1},myRating:i})}let x=[];"true"!==o.query.includeInstalled&&(x=(await n.select({name:i.name}).from(i)).map(e=>e.name));const[v,w]=await c.list({search:d,sort:j,limit:p,offset:g,exclude:x});if(v)return a.status(v.code).json({error:v.msg});a.json(w)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\known\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\known\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/extensions/getSiteMarketplaceClient.js";import t from"../../../../../server/utils/extensions/getSiteInstallId.js";import r from"../../../../../server/utils/extensions/getExtension.js";export default async(n,o)=>{const i=n.cookies.session_token,[a,u]=await s(i,"system:extensions:install");if(a)return o.status(a.code).json({error:a.msg});if(!u)return o.status(403).json({error:"Insufficient permissions"});const{name:m,rating:l}=n.body||{};if(!Number.isInteger(l)||l<1||l>5)return o.status(400).json({error:"rating must be a whole number from 1 to 5"});const[c]=await r({name:m});if(c)return o.status(404===c.code?409:c.code).json({error:404===c.code?"Only an extension installed on this site can be rated":c.msg});const[f,d]=await t();if(f)return o.status(f.code).json({error:f.msg});const j=await e();await j.report({installId:d,extension:m});const[g,p]=await j.rate({installId:d,extension:m,value:l});if(g)return o.status(g.code).json({error:g.msg});o.json(p)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\extensions\rating\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\rating\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../server/utils/auth/requestPasswordReset.js";export default async(e,r)=>{try{const{email:o}=e.body,[t,a]=await s({email:o});if(t)return r.status(t.code).json({error:t.msg});r.json({success:!0,message:"Password reset email sent"})}catch(s){console.error("Forgot password error:",s),r.status(500).json({error:"Failed to send password reset email"})}};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\forgot-password\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\forgot-password\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as r}from"fs";import{resolve as s,join as e}from"path";import t from"../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../server/utils/fragments/getFragmentMetadata.js";import i from"../../../../server/utils/fragments/deleteFragment.js";const n=r(e(process.cwd(),"public"))?e(process.cwd(),"public"):s(import.meta.dirname,"../../../../app-public");export default async(r,s)=>{const e=r.cookies.session_token,[a,f]=await t(e,"system:fragments:delete");if(a)return s.status(a.code).json({error:a.msg});if(!f)return s.status(403).json({error:"Insufficient permissions"});const{files:m}=r.body||{};if(!m?.length)return s.status(400).json({error:"No files specified"});for(const r of m){const[e,t]=await o({rootDir:n,file:r});if(!e&&t.locked)return s.status(403).json({error:`Cannot delete locked fragment: ${r}`})}const[c,u]=await i({rootDir:n,files:m});if(c)return s.status(c.code).json({error:c.msg});s.json(u)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\fragments\DELETE.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\DELETE.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as t}from"path";import o from"../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../server/utils/fragments/listFragments.js";const i=s(t(process.cwd(),"public"))?t(process.cwd(),"public"):r(import.meta.dirname,"../../../../app-public");export default async(s,r)=>{const t=s.cookies.session_token,[n,m]=await o(t,"system:fragments:read");if(n)return r.status(n.code).json({error:n.msg});if(!m)return r.status(403).json({error:"Insufficient permissions"});const[a,c]=await e({rootDir:i});if(a)return r.status(a.code).json({error:a.msg});r.json(c)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\fragments\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as r}from"fs";import{resolve as s,join as e}from"path";import t from"../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../server/utils/auth/getSession.js";import i from"../../../../server/utils/fragments/createFragment.js";const n=r(e(process.cwd(),"public"))?e(process.cwd(),"public"):s(import.meta.dirname,"../../../../app-public");export default async(r,s)=>{const e=r.cookies.session_token,[a,m]=await t(e,"system:fragments:create");if(a)return s.status(a.code).json({error:a.msg});if(!m)return s.status(403).json({error:"Insufficient permissions"});const{directory:u,name:c}=r.body;if(!c)return s.status(400).json({error:"Fragment name is required"});const[,p]=await o({token:e}),f=p?.user?.name||"",[d,j]=await i({rootDir:n,directory:u,name:c,author:f});if(d)return s.status(d.code).json({error:d.msg});s.status(201).json(j)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\fragments\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as r}from"fs";import{resolve as s,join as e}from"path";import t from"../../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../../server/utils/fragments/getFragmentMetadata.js";import i from"../../../../../server/utils/fragments/disableFragment.js";const a=r(e(process.cwd(),"public"))?e(process.cwd(),"public"):s(import.meta.dirname,"../../../../../app-public");export default async(r,s)=>{const e=r.cookies.session_token,[n,m]=await t(e,"system:pages:update");if(n)return s.status(n.code).json({error:n.msg});if(!m)return s.status(403).json({error:"Insufficient permissions"});const{file:u}=r.body||{};if(!u)return s.status(400).json({error:"File path is required"});const[c,f]=await o({rootDir:a,file:u});if(!c&&f.locked)return s.status(403).json({error:"Cannot disable a locked fragment"});const[p,l]=await i({rootDir:a,file:u});if(p)return s.status(p.code).json({error:p.msg});s.json(l)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\fragments\disable\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\disable\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as e}from"path";import t from"../../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../../server/utils/fragments/enableFragment.js";const i=s(e(process.cwd(),"public"))?e(process.cwd(),"public"):r(import.meta.dirname,"../../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[n,a]=await t(e,"system:pages:update");if(n)return r.status(n.code).json({error:n.msg});if(!a)return r.status(403).json({error:"Insufficient permissions"});const{file:m}=s.body||{};if(!m)return r.status(400).json({error:"File path is required"});const[p,u]=await o({rootDir:i,file:m});if(p)return r.status(p.code).json({error:p.msg});r.json(u)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\fragments\enable\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\enable\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as r}from"fs";import{resolve as s,join as e}from"path";import t from"../../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../../server/utils/fragments/getFragment.js";const i=r(e(process.cwd(),"public"))?e(process.cwd(),"public"):s(import.meta.dirname,"../../../../../app-public");export default async(r,s)=>{const e=r.cookies.session_token,[n,a]=await t(e,"system:fragments:read");if(n)return s.status(n.code).json({error:n.msg});if(!a)return s.status(403).json({error:"Insufficient permissions"});const{file:m}=r.query;if(!m)return s.status(400).json({error:"File path is required"});const[u,c]=await o({rootDir:i,file:m});if(u)return s.status(u.code).json({error:u.msg});s.json(c)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\fragments\file\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\file\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as r}from"fs";import{resolve as s,join as e}from"path";import t from"../../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../../server/utils/fragments/moveFragment.js";const i=r(e(process.cwd(),"public"))?e(process.cwd(),"public"):s(import.meta.dirname,"../../../../../app-public");export default async(r,s)=>{const e=r.cookies.session_token,[n,a]=await t(e,"system:pages:update");if(n)return s.status(n.code).json({error:n.msg});if(!a)return s.status(403).json({error:"Insufficient permissions"});const{file:u,newFile:m}=r.body;if(!u)return s.status(400).json({error:"File path is required"});if(!m)return s.status(400).json({error:"New file path is required"});const[p,c]=await o({rootDir:i,file:u,newFile:m});if(p)return s.status(p.code).json({error:p.msg});s.json(c)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\fragments\file\PATCH.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\file\PATCH.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as r}from"fs";import{resolve as s,join as t}from"path";import e from"../../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../../server/utils/fragments/getFragmentMetadata.js";import i from"../../../../../server/utils/fragments/updateFragment.js";const a=r(t(process.cwd(),"public"))?t(process.cwd(),"public"):s(import.meta.dirname,"../../../../../app-public");export default async(r,s)=>{const t=r.cookies.session_token,[n,m]=await e(t,"system:fragments:update");if(n)return s.status(n.code).json({error:n.msg});if(!m)return s.status(403).json({error:"Insufficient permissions"});const{file:u,name:p,author:c,markup:f}=r.body;if(!u)return s.status(400).json({error:"File path is required"});const[d,l]=await o({rootDir:a,file:u});if(!d&&l.locked)return s.status(403).json({error:"This fragment is locked and cannot be edited"});const[g,j]=await i({rootDir:a,file:u,name:p,author:c,markup:f});if(g)return s.status(g.code).json({error:g.msg});s.json(j)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\fragments\file\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\file\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as e}from"path";import o from"../../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../../server/utils/fragments/setFragmentLocked.js";const i=s(e(process.cwd(),"public"))?e(process.cwd(),"public"):r(import.meta.dirname,"../../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[n,a]=await o(e,"system:fragments:update");if(n)return r.status(n.code).json({error:n.msg});if(!a)return r.status(403).json({error:"Insufficient permissions"});const{file:c,locked:m}=s.body;if(!c)return r.status(400).json({error:"File path is required"});if("boolean"!=typeof m)return r.status(400).json({error:"locked must be a boolean"});const[u,p]=await t({rootDir:i,file:c,locked:m});if(u)return r.status(u.code).json({error:u.msg});r.json(p)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\fragments\lock\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\lock\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as o}from"fs";import{resolve as s,join as t}from"path";import r from"../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../server/utils/global-content/getGlobalContentMetadata.js";import n from"../../../../server/utils/global-content/deleteGlobalContent.js";const i=o(t(process.cwd(),"public"))?t(process.cwd(),"public"):s(import.meta.dirname,"../../../../app-public");export default async(o,s)=>{const t=o.cookies.session_token,[a,c]=await r(t,"system:globals:delete");if(a)return s.status(a.code).json({error:a.msg});if(!c)return s.status(403).json({error:"Insufficient permissions"});const{ids:l}=o.body||{};if(!l?.length)return s.status(400).json({error:"No IDs specified"});for(const o of l){const[t,r]=await e({rootDir:i,id:o});if(!t&&r.locked)return s.status(403).json({error:`Cannot delete locked global content: ${r.name}`})}const[m,u]=await n({rootDir:i,ids:l});if(m)return s.status(m.code).json({error:m.msg});s.json(u)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\globals\DELETE.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\DELETE.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as o}from"path";import t from"../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../server/utils/global-content/listGlobalContent.js";const i=s(o(process.cwd(),"public"))?o(process.cwd(),"public"):r(import.meta.dirname,"../../../../app-public");export default async(s,r)=>{const o=s.cookies.session_token,[n,a]=await t(o,"system:globals:read");if(n)return r.status(n.code).json({error:n.msg});if(!a)return r.status(403).json({error:"Insufficient permissions"});const[c,m]=await e({rootDir:i,includeMenu:!1});if(c)return r.status(c.code).json({error:c.msg});r.json(m)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\globals\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as r}from"fs";import{resolve as s,join as o}from"path";import t from"../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../server/utils/auth/getSession.js";import i from"../../../../server/utils/global-content/createGlobalContent.js";const n=r(o(process.cwd(),"public"))?o(process.cwd(),"public"):s(import.meta.dirname,"../../../../app-public");export default async(r,s)=>{const o=r.cookies.session_token,[a,u]=await t(o,"system:globals:create");if(a)return s.status(a.code).json({error:a.msg});if(!u)return s.status(403).json({error:"Insufficient permissions"});const{name:c,location:m,priority:p}=r.body;if(!c)return s.status(400).json({error:"Name is required"});if(!m)return s.status(400).json({error:"Location is required"});const[,l]=await e({token:o}),f=l?.user?.name||"",[d,j]=await i({rootDir:n,name:c,location:m,priority:p,author:f});if(d)return s.status(d.code).json({error:d.msg});s.status(201).json(j)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\globals\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as o}from"path";import t from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/global-content/disableGlobalContent.js";const i=s(o(process.cwd(),"public"))?o(process.cwd(),"public"):r(import.meta.dirname,"../../../../../app-public");export default async(s,r)=>{const o=s.cookies.session_token,[n,a]=await t(o,"system:globals:update");if(n)return r.status(n.code).json({error:n.msg});if(!a)return r.status(403).json({error:"Insufficient permissions"});const{id:c}=s.body||{};if(!c)return r.status(400).json({error:"Global content ID is required"});const[u,m]=await e({rootDir:i,id:c});if(u)return r.status(u.code).json({error:u.msg});r.json(m)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\globals\disable\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\disable\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as o}from"path";import t from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/global-content/enableGlobalContent.js";const i=s(o(process.cwd(),"public"))?o(process.cwd(),"public"):r(import.meta.dirname,"../../../../../app-public");export default async(s,r)=>{const o=s.cookies.session_token,[n,a]=await t(o,"system:globals:update");if(n)return r.status(n.code).json({error:n.msg});if(!a)return r.status(403).json({error:"Insufficient permissions"});const{id:c}=s.body||{};if(!c)return r.status(400).json({error:"Global content ID is required"});const[u,m]=await e({rootDir:i,id:c});if(u)return r.status(u.code).json({error:u.msg});r.json(m)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\globals\enable\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\enable\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as o}from"path";import t from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/global-content/getGlobalContent.js";const i=s(o(process.cwd(),"public"))?o(process.cwd(),"public"):r(import.meta.dirname,"../../../../../app-public");export default async(s,r)=>{const o=s.cookies.session_token,[n,a]=await t(o,"system:globals:read");if(n)return r.status(n.code).json({error:n.msg});if(!a)return r.status(403).json({error:"Insufficient permissions"});const{id:c}=s.query;if(!c)return r.status(400).json({error:"Global content ID is required"});const[u,m]=await e({rootDir:i,id:c});if(u)return r.status(u.code).json({error:u.msg});r.json(m)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\globals\entry\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\entry\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as o}from"fs";import{resolve as t,join as r}from"path";import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/global-content/getGlobalContentMetadata.js";import i from"../../../../../server/utils/global-content/updateGlobalContent.js";const n=o(r(process.cwd(),"public"))?r(process.cwd(),"public"):t(import.meta.dirname,"../../../../../app-public");export default async(o,t)=>{const r=o.cookies.session_token,[a,c]=await s(r,"system:globals:update");if(a)return t.status(a.code).json({error:a.msg});if(!c)return t.status(403).json({error:"Insufficient permissions"});const{id:l,name:u,location:m,priority:p,markup:d}=o.body;if(!l)return t.status(400).json({error:"Global content ID is required"});const[f,b]=await e({rootDir:n,id:l});if(!f&&b.locked)return t.status(403).json({error:"This global content is locked and cannot be edited"});const[j,g]=await i({rootDir:n,id:l,name:u,location:m,priority:p,markup:d});if(j)return t.status(j.code).json({error:j.msg});t.json(g)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\globals\entry\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\entry\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as o}from"fs";import{resolve as s,join as r}from"path";import e from"../../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../../server/utils/global-content/setGlobalContentLocked.js";const i=o(r(process.cwd(),"public"))?r(process.cwd(),"public"):s(import.meta.dirname,"../../../../../app-public");export default async(o,s)=>{const r=o.cookies.session_token,[n,a]=await e(r,"system:globals:update");if(n)return s.status(n.code).json({error:n.msg});if(!a)return s.status(403).json({error:"Insufficient permissions"});const{id:c,locked:u}=o.body;if(!c)return s.status(400).json({error:"Global content ID is required"});if("boolean"!=typeof u)return s.status(400).json({error:"locked must be a boolean"});const[l,m]=await t({rootDir:i,id:c,locked:u});if(l)return s.status(l.code).json({error:l.msg});s.json(m)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\globals\lock\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\lock\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../server/utils/groups/deleteGroup.js";export default async(e,t)=>{const n=e.cookies.session_token,{names:o}=e.body;if(!o||!Array.isArray(o)||0===o.length)return t.status(400).json({error:"Names array is required"});const[i,u]=await s(n,"system:group:delete");if(i)return t.status(i.code).json({error:i.msg});if(!u)return t.status(403).json({error:"Insufficient permissions"});const a=o.filter(s=>{const r=s.includes(":")?s.split(":")[0]:null;return r&&"admin"!==r});if(a.length)return t.status(403).json({error:`Cannot delete non-admin groups: ${a.join(", ")}`});const l=[],m=[];for(const s of o){const[e,t]=await r(s);e?m.push({name:s,error:e.msg}):l.push(t)}if(m.length>0)return t.status(207).json({deleted:l,errors:m});t.json({deleted:l})};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\groups\DELETE.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\DELETE.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../server/utils/groups/listGroups.js";export default async(e,o)=>{const t=e.cookies.session_token,[i,n]=await s(t,"system:group:read");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"Insufficient permissions"});const u=parseInt(e.query.limit)||50,a=parseInt(e.query.offset)||0,f=e.query.owner,[m,p]=await r({limit:u,offset:a,owner:f});if(m)return o.status(m.code).json({error:m.msg});o.json(p)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\groups\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../server/utils/groups/updateGroup.js";export default async(e,o)=>{const t=e.cookies.session_token,{name:n,newName:i,description:u}=e.body;if(!n)return o.status(400).json({error:"Group name is required"});if(n.startsWith("system:"))return o.status(403).json({error:"Permission denied: Cannot edit system-owned groups"});const[a,m]=await s(t,"system:group:update");if(a)return o.status(a.code).json({error:a.msg});if(!m)return o.status(403).json({error:"Insufficient permissions"});const d={};void 0!==u&&(d.description=u),void 0!==i&&(d.name=i);const[p,c]=await r(n,d);if(p)return o.status(p.code).json({error:p.msg});o.json(c)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\groups\PATCH.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\PATCH.js.map
@@ -1,2 +1,2 @@
1
1
  import r from"../../../../server/utils/permissions/currentUserHasPermission.js";import s from"../../../../server/utils/groups/createGroup.js";export default async(e,o)=>{const t=e.cookies.session_token,{name:n,description:i}=e.body;if(!n||!n.trim())return o.status(400).json({error:"Group name is required"});if(n.includes(":"))return o.status(400).json({error:'Group name cannot contain ":"'});const[u,a]=await r(t,"system:group:create");if(u)return o.status(u.code).json({error:u.msg});if(!a)return o.status(403).json({error:"Insufficient permissions"});const[c,m]=await s({name:`custom:${n}`,description:i,owner:"custom"});if(c)return o.status(c.code).json({error:c.msg});o.json(m)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\groups\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../server/utils/groups/getGroup.js";export default async(e,o)=>{const t=e.cookies.session_token,[n,i]=await s(t,"system:group:read");if(n)return o.status(n.code).json({error:n.msg});if(!i)return o.status(403).json({error:"Insufficient permissions"});const{name:a}=e.params,[u,m]=await r(decodeURIComponent(a));if(u)return o.status(u.code).json({error:u.msg});o.json(m)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/groups/removeUserFromGroup.js";export default async(e,o)=>{const t=e.cookies.session_token,{userId:n}=e.body;if(!n)return o.status(400).json({error:"User ID is required"});const[i,u]=await s(t,"system:group:update");if(i)return o.status(i.code).json({error:i.msg});if(!u)return o.status(403).json({error:"Insufficient permissions"});const{name:a}=e.params,[m,p]=await r(n,decodeURIComponent(a));if(m)return o.status(m.code).json({error:m.msg});o.json(p)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\members\DELETE.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\members\DELETE.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/groups/getGroupMembers.js";export default async(e,o)=>{const t=e.cookies.session_token,[i,n]=await s(t,"system:group:read");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"Insufficient permissions"});const{name:a}=e.params,m=parseInt(e.query.limit)||50,u=parseInt(e.query.offset)||0,[f,p]=await r(decodeURIComponent(a),{limit:m,offset:u});if(f)return o.status(f.code).json({error:f.msg});o.json(p)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\members\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\members\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/groups/addUserToGroup.js";export default async(e,o)=>{const t=e.cookies.session_token,{userId:n}=e.body;if(!n)return o.status(400).json({error:"User ID is required"});const[i,u]=await s(t,"system:group:update");if(i)return o.status(i.code).json({error:i.msg});if(!u)return o.status(403).json({error:"Insufficient permissions"});const{name:a}=e.params,[m,d]=await r(n,decodeURIComponent(a));if(m)return o.status(m.code).json({error:m.msg});o.json(d)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\members\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\members\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/permissions/removePermissionFromGroup.js";export default async(e,o)=>{const i=e.cookies.session_token,{permissionName:n}=e.body;if(!n)return o.status(400).json({error:"Permission name is required"});const[t,m]=await s(i,"system:group:update");if(t)return o.status(t.code).json({error:t.msg});if(!m)return o.status(403).json({error:"Insufficient permissions"});const{name:a}=e.params,[u,p]=await r(decodeURIComponent(a),n);if(u)return o.status(u.code).json({error:u.msg});o.json(p)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\permissions\DELETE.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\permissions\DELETE.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/permissions/getPermissionsForGroups.js";export default async(e,o)=>{const i=e.cookies.session_token,[n,t]=await s(i,"system:permissions:read");if(n)return o.status(n.code).json({error:n.msg});if(!t)return o.status(403).json({error:"Insufficient permissions"});const{name:m}=e.params,a=decodeURIComponent(m),[u,p]=await r([{name:a}]);if(u)return o.status(u.code).json({error:u.msg});o.json({permissions:p})};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\permissions\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\permissions\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/permissions/addPermissionToGroup.js";export default async(e,o)=>{const i=e.cookies.session_token,{permissionName:n}=e.body;if(!n)return o.status(400).json({error:"Permission name is required"});const[t,m]=await s(i,"system:group:update");if(t)return o.status(t.code).json({error:t.msg});if(!m)return o.status(403).json({error:"Insufficient permissions"});const{name:a}=e.params,[u,p]=await r(decodeURIComponent(a),n);if(u)return o.status(u.code).json({error:u.msg});o.json(p)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\permissions\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\[name]\permissions\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as e}from"path";import o from"../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../server/utils/menus/deleteMenu.js";const i=s(e(process.cwd(),"public"))?e(process.cwd(),"public"):r(import.meta.dirname,"../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[n,m]=await o(e,"system:globals:delete");if(n)return r.status(n.code).json({error:n.msg});if(!m)return r.status(403).json({error:"Insufficient permissions"});const{id:c}=s.body||{},[p,u]=await t({rootDir:i,id:c});if(p)return r.status(p.code).json({error:p.msg});r.json(u)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\menus\DELETE.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\menus\DELETE.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as o}from"path";import e from"../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../server/utils/menus/listMenus.js";const i=s(o(process.cwd(),"public"))?o(process.cwd(),"public"):r(import.meta.dirname,"../../../../app-public");export default async(s,r)=>{const o=s.cookies.session_token,[n,m]=await e(o,"system:globals:read");if(n)return r.status(n.code).json({error:n.msg});if(!m)return r.status(403).json({error:"Insufficient permissions"});const[a,c]=await t({rootDir:i});if(a)return r.status(a.code).json({error:a.msg});r.json(c)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\menus\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\menus\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as e}from"path";import t from"../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../server/utils/auth/getSession.js";import i from"../../../../server/utils/menus/saveMenu.js";const a=s(e(process.cwd(),"public"))?e(process.cwd(),"public"):r(import.meta.dirname,"../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,{id:n,name:m}=s.body||{},[u,p]=await t(e,n?"system:globals:update":"system:globals:create");if(u)return r.status(u.code).json({error:u.msg});if(!p)return r.status(403).json({error:"Insufficient permissions"});const[,c]=await o({token:e}),f=c?.user?.name||"",[l,d]=await i({rootDir:a,id:n,name:m,author:f});if(l)return r.status(l.code).json({error:l.msg});r.status(n?200:201).json(d)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\menus\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\menus\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as e}from"path";import o from"../../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../../server/utils/menus/adoptMenuItem.js";const i=s(e(process.cwd(),"public"))?e(process.cwd(),"public"):r(import.meta.dirname,"../../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[n,m]=await o(e,"system:globals:update");if(n)return r.status(n.code).json({error:n.msg});if(!m)return r.status(403).json({error:"Insufficient permissions"});const{id:u,menuId:a,menuName:p}=s.body||{},[c,d]=await t({rootDir:i,id:u,menuId:a,menuName:p});if(c)return r.status(c.code).json({error:c.msg});r.json(d)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\menus\adopt\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\menus\adopt\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as e}from"path";import o from"../../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../../server/utils/menus/deleteMenuItems.js";const i=s(e(process.cwd(),"public"))?e(process.cwd(),"public"):r(import.meta.dirname,"../../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[n,m]=await o(e,"system:globals:delete");if(n)return r.status(n.code).json({error:n.msg});if(!m)return r.status(403).json({error:"Insufficient permissions"});const{ids:c}=s.body||{},[p,u]=await t({rootDir:i,ids:c});if(p)return r.status(p.code).json({error:p.msg});r.json(u)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\menus\items\DELETE.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\menus\items\DELETE.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as e,join as r}from"path";import o from"../../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../../server/utils/auth/getSession.js";import i from"../../../../../server/utils/menus/saveMenuItem.js";const n=s(r(process.cwd(),"public"))?r(process.cwd(),"public"):e(import.meta.dirname,"../../../../../app-public");export default async(s,e)=>{const r=s.cookies.session_token,{id:a,menuId:m,location:u,navItem:c,label:p,href:l,icon:f,newTab:d}=s.body||{},[b,j]=await o(r,a?"system:globals:update":"system:globals:create");if(b)return e.status(b.code).json({error:b.msg});if(!j)return e.status(403).json({error:"Insufficient permissions"});const[,w]=await t({token:r}),v=w?.user?.name||"",[I,g]=await i({rootDir:n,id:a,menuId:m,location:u,navItem:c,label:p,href:l,icon:f,newTab:!0===d,author:v});if(I)return e.status(I.code).json({error:I.msg});e.status(a?200:201).json(g)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\menus\items\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\menus\items\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as e}from"path";import o from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../../../server/utils/menus/setMenuItemEnabled.js";const i=s(e(process.cwd(),"public"))?e(process.cwd(),"public"):r(import.meta.dirname,"../../../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[n,a]=await o(e,"system:globals:update");if(n)return r.status(n.code).json({error:n.msg});if(!a)return r.status(403).json({error:"Insufficient permissions"});const{id:m,enabled:p}=s.body||{},[u,c]=await t({rootDir:i,id:m,enabled:p});if(u)return r.status(u.code).json({error:u.msg});r.json(c)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\menus\items\enabled\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\menus\items\enabled\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as r,join as e}from"path";import o from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../../../server/utils/menus/reorderMenuItems.js";const i=s(e(process.cwd(),"public"))?e(process.cwd(),"public"):r(import.meta.dirname,"../../../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[n,m]=await o(e,"system:globals:update");if(n)return r.status(n.code).json({error:n.msg});if(!m)return r.status(403).json({error:"Insufficient permissions"});const{menuId:u,ids:p}=s.body||{},[a,c]=await t({rootDir:i,menuId:u,ids:p});if(a)return r.status(a.code).json({error:a.msg});r.json(c)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\menus\items\order\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\menus\items\order\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import{existsSync as s}from"fs";import{resolve as o,join as r}from"path";import t from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/menus/assignMenuLocation.js";const i=s(r(process.cwd(),"public"))?r(process.cwd(),"public"):o(import.meta.dirname,"../../../../../app-public");export default async(s,o)=>{const r=s.cookies.session_token,[n,a]=await t(r,"system:globals:update");if(n)return o.status(n.code).json({error:n.msg});if(!a)return o.status(403).json({error:"Insufficient permissions"});const{location:m,menuId:c}=s.body||{},[u,p]=await e({rootDir:i,location:m,menuId:c});if(u)return o.status(u.code).json({error:u.msg});o.json(p)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\menus\location\PUT.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\menus\location\PUT.js.map
@@ -1,2 +1,2 @@
1
1
  import t from"../../../../server/utils/auth/getSession.js";import e from"../../../../server/utils/notifications/getNotifications.js";export default async(s,o)=>{const[r,i]=await t({token:s.cookies.session_token});if(r)return o.status(500===r.code?500:401).json({error:500===r.code?r.msg:"Authentication required"});const{unreadOnly:n,limit:u,offset:a}=s.query,[f,c]=await e({userId:i.user.id,unreadOnly:"true"===n,limit:u,offset:a});if(f)return o.status(f.code).json({error:f.msg});o.json(c)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\notifications\GET.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\notifications\GET.js.map
@@ -1,2 +1,2 @@
1
1
  import t from"../../../../../server/utils/auth/getSession.js";import o from"../../../../../server/utils/notifications/deleteNotification.js";export default async(s,e)=>{const[i,r]=await t({token:s.cookies.session_token});if(i)return e.status(500===i.code?500:401).json({error:500===i.code?i.msg:"Authentication required"});const[n,a]=await o({userId:r.user.id,notificationId:s.params.id});if(n)return e.status(n.code).json({error:n.msg});e.json(a)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\notifications\[id]\DELETE.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\notifications\[id]\DELETE.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/auth/getSession.js";import t from"../../../../../../server/utils/notifications/markHandled.js";export default async(o,e)=>{const[r,i]=await s({token:o.cookies.session_token});if(r)return e.status(500===r.code?500:401).json({error:500===r.code?r.msg:"Authentication required"});const[n,a]=await t({userId:i.user.id,notificationId:o.params.id});if(n)return e.status(n.code).json({error:n.msg});e.json(a)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\notifications\[id]\handled\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\notifications\[id]\handled\POST.js.map
@@ -1,2 +1,2 @@
1
1
  import s from"../../../../../../server/utils/auth/getSession.js";import t from"../../../../../../server/utils/notifications/markRead.js";export default async(o,e)=>{const[r,i]=await s({token:o.cookies.session_token});if(r)return e.status(500===r.code?500:401).json({error:500===r.code?r.msg:"Authentication required"});const[n,a]=await t({userId:i.user.id,notificationId:o.params.id});if(n)return e.status(n.code).json({error:n.msg});e.json(a)};
2
- //# sourceMappingURL=c:\Users\dusti\dev\kempo\dist\kempo\api\notifications\[id]\read\POST.js.map
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\notifications\[id]\read\POST.js.map