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.
- package/dist/admin/component-overrides.js +1 -1
- package/dist/admin/components/AddGroupControl.js +1 -1
- package/dist/admin/components/AdminTableControl.js +1 -1
- package/dist/admin/components/ClearExpiredSessionsControl.js +1 -1
- package/dist/admin/components/Dashboard.js +1 -1
- package/dist/admin/components/EmailTemplates.js +1 -1
- package/dist/admin/components/Emails.js +1 -1
- package/dist/admin/components/FragmentEditor.js +1 -1
- package/dist/admin/components/GlobalContentEditor.js +1 -1
- package/dist/admin/components/GroupDeleteSelected.js +1 -1
- package/dist/admin/components/GroupRemoveRecord.js +1 -1
- package/dist/admin/components/Menus.js +1 -1
- package/dist/admin/components/Monaco.js +1 -1
- package/dist/admin/components/PageEditor.js +1 -1
- package/dist/admin/components/TableRowDelete.js +1 -1
- package/dist/admin/components/TableRowLink.js +1 -1
- package/dist/admin/components/TemplateEditor.js +1 -1
- package/dist/admin/components/Updates.js +10 -9
- package/dist/admin/components/Updates.js.map +1 -1
- package/dist/admin/components/ValueEditor.js +1 -1
- package/dist/admin/components/dashboardLayout.js +1 -1
- package/dist/admin/components/settings/AdminSettings.js +1 -1
- package/dist/admin/components/settings/BooleanSetting.js +1 -1
- package/dist/admin/components/settings/JsonSetting.js +1 -1
- package/dist/admin/components/settings/NumberSetting.js +1 -1
- package/dist/admin/components/settings/SecretSetting.js +1 -1
- package/dist/admin/components/settings/Setting.js +1 -1
- package/dist/admin/components/settings/SettingEditor.js +1 -1
- package/dist/admin/components/settings/SettingsPanel.js +1 -1
- package/dist/admin/components/settings/StringSetting.js +1 -1
- package/dist/admin/components/settings/humanize.js +1 -1
- package/dist/admin/components/tableControls/AddMember.js +1 -1
- package/dist/admin/components/tableControls/AddPermission.js +1 -1
- package/dist/admin/components/tableControls/ExtensionDetails.js +1 -1
- package/dist/admin/components/tableControls/InstallExtension.js +1 -1
- package/dist/admin/components/tableControls/ToggleExtension.js +1 -1
- package/dist/admin/components/tableControls/UninstallExtension.js +1 -1
- package/dist/admin/components/widgets/Content.js +1 -1
- package/dist/admin/components/widgets/Extensions.js +1 -1
- package/dist/admin/components/widgets/Notifications.js +1 -1
- package/dist/admin/components/widgets/Pages.js +1 -1
- package/dist/admin/components/widgets/Users.js +1 -1
- package/dist/admin/init.js +1 -1
- package/dist/kempo/api/admin-globals/DELETE.js +1 -1
- package/dist/kempo/api/admin-globals/GET.js +1 -1
- package/dist/kempo/api/admin-globals/POST.js +1 -1
- package/dist/kempo/api/admin-globals/[id]/GET.js +1 -1
- package/dist/kempo/api/admin-globals/[id]/PUT.js +1 -1
- package/dist/kempo/api/admin-globals/[id]/disable/PUT.js +1 -1
- package/dist/kempo/api/admin-globals/[id]/enable/PUT.js +1 -1
- package/dist/kempo/api/auth/change-password/POST.js +1 -1
- package/dist/kempo/api/auth/login/email/POST.js +1 -1
- package/dist/kempo/api/auth/logout/POST.js +1 -1
- package/dist/kempo/api/auth/register/email/POST.js +1 -1
- package/dist/kempo/api/auth/reset-password/POST.js +1 -1
- package/dist/kempo/api/auth/session/GET.js +1 -1
- package/dist/kempo/api/auth/verify-email/POST.js +1 -1
- package/dist/kempo/api/dashboard/widgets/GET.js +1 -1
- package/dist/kempo/api/email-templates/GET.js +1 -1
- package/dist/kempo/api/email-templates/file/DELETE.js +1 -1
- package/dist/kempo/api/email-templates/file/GET.js +1 -1
- package/dist/kempo/api/email-templates/file/PUT.js +1 -1
- package/dist/kempo/api/email-templates/preview/GET.js +1 -1
- package/dist/kempo/api/emails/GET.js +1 -1
- package/dist/kempo/api/emails/[id]/GET.js +1 -1
- package/dist/kempo/api/emails/[id]/retry/POST.js +1 -1
- package/dist/kempo/api/emails/test/POST.js +1 -1
- package/dist/kempo/api/extensions/DELETE.js +1 -1
- package/dist/kempo/api/extensions/GET.js +1 -1
- package/dist/kempo/api/extensions/POST.js +1 -1
- package/dist/kempo/api/extensions/[name]/dependents/GET.js +1 -1
- package/dist/kempo/api/extensions/[name]/disable/POST.js +1 -1
- package/dist/kempo/api/extensions/[name]/enable/POST.js +1 -1
- package/dist/kempo/api/extensions/[name]/requirements/GET.js +1 -1
- package/dist/kempo/api/extensions/[name]/update/POST.js +1 -1
- package/dist/kempo/api/extensions/[name]/update-check/GET.js +1 -1
- package/dist/kempo/api/extensions/available/GET.js +1 -1
- package/dist/kempo/api/extensions/known/GET.js +1 -1
- package/dist/kempo/api/extensions/rating/PUT.js +1 -1
- package/dist/kempo/api/forgot-password/POST.js +1 -1
- package/dist/kempo/api/fragments/DELETE.js +1 -1
- package/dist/kempo/api/fragments/GET.js +1 -1
- package/dist/kempo/api/fragments/POST.js +1 -1
- package/dist/kempo/api/fragments/disable/PUT.js +1 -1
- package/dist/kempo/api/fragments/enable/PUT.js +1 -1
- package/dist/kempo/api/fragments/file/GET.js +1 -1
- package/dist/kempo/api/fragments/file/PATCH.js +1 -1
- package/dist/kempo/api/fragments/file/PUT.js +1 -1
- package/dist/kempo/api/fragments/lock/PUT.js +1 -1
- package/dist/kempo/api/globals/DELETE.js +1 -1
- package/dist/kempo/api/globals/GET.js +1 -1
- package/dist/kempo/api/globals/POST.js +1 -1
- package/dist/kempo/api/globals/disable/PUT.js +1 -1
- package/dist/kempo/api/globals/enable/PUT.js +1 -1
- package/dist/kempo/api/globals/entry/GET.js +1 -1
- package/dist/kempo/api/globals/entry/PUT.js +1 -1
- package/dist/kempo/api/globals/lock/PUT.js +1 -1
- package/dist/kempo/api/groups/DELETE.js +1 -1
- package/dist/kempo/api/groups/GET.js +1 -1
- package/dist/kempo/api/groups/PATCH.js +1 -1
- package/dist/kempo/api/groups/POST.js +1 -1
- package/dist/kempo/api/groups/[name]/GET.js +1 -1
- package/dist/kempo/api/groups/[name]/members/DELETE.js +1 -1
- package/dist/kempo/api/groups/[name]/members/GET.js +1 -1
- package/dist/kempo/api/groups/[name]/members/POST.js +1 -1
- package/dist/kempo/api/groups/[name]/permissions/DELETE.js +1 -1
- package/dist/kempo/api/groups/[name]/permissions/GET.js +1 -1
- package/dist/kempo/api/groups/[name]/permissions/POST.js +1 -1
- package/dist/kempo/api/menus/DELETE.js +1 -1
- package/dist/kempo/api/menus/GET.js +1 -1
- package/dist/kempo/api/menus/POST.js +1 -1
- package/dist/kempo/api/menus/adopt/PUT.js +1 -1
- package/dist/kempo/api/menus/items/DELETE.js +1 -1
- package/dist/kempo/api/menus/items/POST.js +1 -1
- package/dist/kempo/api/menus/items/enabled/PUT.js +1 -1
- package/dist/kempo/api/menus/items/order/PUT.js +1 -1
- package/dist/kempo/api/menus/location/PUT.js +1 -1
- package/dist/kempo/api/notifications/GET.js +1 -1
- package/dist/kempo/api/notifications/[id]/DELETE.js +1 -1
- package/dist/kempo/api/notifications/[id]/handled/POST.js +1 -1
- package/dist/kempo/api/notifications/[id]/read/POST.js +1 -1
- package/dist/kempo/api/notifications/count/GET.js +1 -1
- package/dist/kempo/api/notifications/read-all/POST.js +1 -1
- package/dist/kempo/api/pages/DELETE.js +1 -1
- package/dist/kempo/api/pages/GET.js +1 -1
- package/dist/kempo/api/pages/POST.js +1 -1
- package/dist/kempo/api/pages/directories/GET.js +1 -1
- package/dist/kempo/api/pages/disable/PUT.js +1 -1
- package/dist/kempo/api/pages/enable/PUT.js +1 -1
- package/dist/kempo/api/pages/file/GET.js +1 -1
- package/dist/kempo/api/pages/file/PATCH.js +1 -1
- package/dist/kempo/api/pages/file/PUT.js +1 -1
- package/dist/kempo/api/pages/lock/PUT.js +1 -1
- package/dist/kempo/api/pages/rescan/POST.js +1 -1
- package/dist/kempo/api/pages/search/GET.js +1 -1
- package/dist/kempo/api/pages/templates/GET.js +1 -1
- package/dist/kempo/api/permissions/DELETE.js +1 -1
- package/dist/kempo/api/permissions/GET.js +1 -1
- package/dist/kempo/api/permissions/PATCH.js +1 -1
- package/dist/kempo/api/permissions/POST.js +1 -1
- package/dist/kempo/api/realtime/WS.js +1 -1
- package/dist/kempo/api/realtime/connections/GET.js +1 -1
- package/dist/kempo/api/settings/[owner]/GET.js +1 -1
- package/dist/kempo/api/settings/[owner]/[name]/DELETE.js +1 -1
- package/dist/kempo/api/settings/[owner]/[name]/GET.js +1 -1
- package/dist/kempo/api/settings/[owner]/[name]/POST.js +1 -1
- package/dist/kempo/api/settings/public/GET.js +1 -1
- package/dist/kempo/api/templates/DELETE.js +1 -1
- package/dist/kempo/api/templates/GET.js +1 -1
- package/dist/kempo/api/templates/POST.js +1 -1
- package/dist/kempo/api/templates/disable/PUT.js +1 -1
- package/dist/kempo/api/templates/enable/PUT.js +1 -1
- package/dist/kempo/api/templates/file/GET.js +1 -1
- package/dist/kempo/api/templates/file/PATCH.js +1 -1
- package/dist/kempo/api/templates/file/PUT.js +1 -1
- package/dist/kempo/api/templates/lock/PUT.js +1 -1
- package/dist/kempo/api/updates/GET.js +1 -1
- package/dist/kempo/api/updates/apply/POST.js +1 -1
- package/dist/kempo/api/updates/check/POST.js +1 -1
- package/dist/kempo/api/updates/discard/POST.js +1 -1
- package/dist/kempo/api/updates/prepare/POST.js +1 -1
- package/dist/kempo/api/updates/rollback/POST.js +1 -1
- package/dist/kempo/api/user/DELETE.js +1 -1
- package/dist/kempo/api/user/GET.js +1 -1
- package/dist/kempo/api/user/PATCH.js +1 -1
- package/dist/kempo/api/user/[userid]/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/groups/DELETE.js +1 -1
- package/dist/kempo/api/user/[userid]/groups/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/groups/POST.js +1 -1
- package/dist/kempo/api/user/[userid]/name/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/permissions/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/permissions/all/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/permissions/list/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/permissions/some/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/sessions/DELETE.js +1 -1
- package/dist/kempo/api/user/[userid]/sessions/GET.js +1 -1
- package/dist/kempo/api/user/[userid]/sessions/expired/DELETE.js +1 -1
- package/dist/kempo/api/user/create/POST.js +1 -1
- package/dist/kempo/api/user/search/GET.js +1 -1
- package/dist/kempo/components/AdminNavFooter.js +1 -1
- package/dist/kempo/components/DashboardWidget.js +1 -1
- package/dist/kempo/components/Login.js +1 -1
- package/dist/kempo/components/LogoutBtn.js +1 -1
- package/dist/kempo/components/Menu.js +1 -1
- package/dist/kempo/components/NotificationBell.js +1 -1
- package/dist/kempo/components/NotificationList.js +1 -1
- package/dist/kempo/components/Permission.js +1 -1
- package/dist/kempo/components/PermissionTarget.js +1 -1
- package/dist/kempo/components/Register.js +1 -1
- package/dist/kempo/components/Role.js +1 -1
- package/dist/kempo/components/UserCreatedAt.js +1 -1
- package/dist/kempo/components/UserDisplayName.js +1 -1
- package/dist/kempo/components/UserEmail.js +1 -1
- package/dist/kempo/components/UserEmailVerified.js +1 -1
- package/dist/kempo/components/UserName.js +1 -1
- package/dist/kempo/fetch.js +1 -1
- package/dist/kempo/realtime.js +1 -1
- package/dist/kempo/sdk.js +1 -1
- package/dist/kempo/utils/safeNext.js +1 -1
- package/package.json +1 -1
- package/server/utils/updates/applyStagedUpdate.js +8 -3
- package/server/utils/updates/goBackPlan.js +34 -0
- package/server/utils/updates/prepareUpdate.js +1 -1
- package/server/utils/updates/releaseStatus.js +8 -5
- package/server/utils/updates/rollbackUpdate.js +14 -21
- package/server/utils/updates/siteLayout.js +17 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/auth/getSession.js";import t from"../../../../../server/utils/notifications/getUnreadCount.js";export default async(e,o)=>{const[r,i]=await s({token:e.cookies.session_token});if(r)return o.status(500===r.code?500:401).json({error:500===r.code?r.msg:"Authentication required"});const[n,u]=await t({userId:i.user.id});if(n)return o.status(n.code).json({error:n.msg});o.json(u)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\notifications\count\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/auth/getSession.js";import e from"../../../../../server/utils/notifications/markAllRead.js";export default async(t,o)=>{const[r,i]=await s({token:t.cookies.session_token});if(r)return o.status(500===r.code?500:401).json({error:500===r.code?r.msg:"Authentication required"});const[n,a]=await e({userId:i.user.id});if(n)return o.status(n.code).json({error:n.msg});o.json(a)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\notifications\read-all\POST.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{existsSync as e}from"fs";import{resolve as s,join as r}from"path";import o from"../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../server/utils/pages/getPageMetadata.js";import i from"../../../../server/utils/pages/deletePage.js";const n=e(r(process.cwd(),"public"))?r(process.cwd(),"public"):s(import.meta.dirname,"../../../../app-public");export default async(e,s)=>{const r=e.cookies.session_token,[a,c]=await o(r,"system:pages:delete");if(a)return s.status(a.code).json({error:a.msg});if(!c)return s.status(403).json({error:"Insufficient permissions"});const{files:f}=e.body||{};if(!f?.length)return s.status(400).json({error:"No files specified"});for(const e of f){const[r,o]=await t({rootDir:n,file:e});if(!r){if(o.locked)return s.status(403).json({error:`Cannot delete locked page: ${e}`});if(o.owner&&"custom"!==o.owner)return s.status(403).json({error:`Cannot delete system-owned page: ${e}`})}}const[p,u]=await i({rootDir:n,files:f});if(p)return s.status(p.code).json({error:p.msg});s.json(u)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\DELETE.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/pages/listPages.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:pages:read");if(n)return r.status(n.code).json({error:n.msg});if(!a)return r.status(403).json({error:"Insufficient permissions"});const{owner:p,showHidden:m,offset:c,limit:f}=s.query,[u,d]=await t({rootDir:i,owner:p||void 0,showHidden:"false"!==m,offset:c?parseInt(c,10):0,limit:f?parseInt(f,10):0});if(u)return r.status(u.code).json({error:u.msg});r.json(d)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{existsSync as e}from"fs";import{resolve as r,join as s}from"path";import t from"../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../server/utils/auth/getSession.js";import a from"../../../../server/utils/pages/createPage.js";const i=e(s(process.cwd(),"public"))?s(process.cwd(),"public"):r(import.meta.dirname,"../../../../app-public");export default async(e,r)=>{const s=e.cookies.session_token,[n,m]=await t(s,"system:pages:create");if(n)return r.status(n.code).json({error:n.msg});if(!m)return r.status(403).json({error:"Insufficient permissions"});const{directory:c,name:u,template:p,extraMetadata:d,locked:f}=e.body;if(!u)return r.status(400).json({error:"Page name is required"});const[,l]=await o({token:s}),j=l?.user?.name||"",[g,k]=await a({rootDir:i,directory:c,name:u,template:p,author:j,extraMetadata:d,locked:f});if(g)return r.status(g.code).json({error:g.msg});r.status(201).json(k)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\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 e from"../../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../../server/utils/pages/listDirectories.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,p]=await e(o,"system:pages:read");if(n)return r.status(n.code).json({error:n.msg});if(!p)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=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\directories\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/pages/getPageMetadata.js";import i from"../../../../../server/utils/pages/disablePage.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,[n,p]=await t(e,"system:pages:update");if(n)return r.status(n.code).json({error:n.msg});if(!p)return r.status(403).json({error:"Insufficient permissions"});const{file:u}=s.body||{};if(!u)return r.status(400).json({error:"File path is required"});const[c,m]=await o({rootDir:a,file:u});if(!c&&m.locked)return r.status(403).json({error:"Cannot disable a locked page"});const[f,l]=await i({rootDir:a,file:u});if(f)return r.status(f.code).json({error:f.msg});r.json(l)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\disable\PUT.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{resolve as r}from"path";import{readFile as s}from"fs/promises";import{existsSync as e}from"fs";import{join as o}from"path";import t from"../../../../../server/utils/permissions/currentUserHasPermission.js";import i from"../../../../../server/utils/fs/parseFrontmatter.js";import p from"../../../../../server/utils/pages/enablePage.js";const m=e(o(process.cwd(),"public"))?o(process.cwd(),"public"):r(import.meta.dirname,"../../../../../app-public");export default async(r,s)=>{const e=r.cookies.session_token,[o,i]=await t(e,"system:pages:update");if(o)return s.status(o.code).json({error:o.msg});if(!i)return s.status(403).json({error:"Insufficient permissions"});const{file:n}=r.body||{};if(!n)return s.status(400).json({error:"File path is required"});const[a,f]=await p({rootDir:m,file:n});if(a)return s.status(a.code).json({error:a.msg});s.json(f)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\enable\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/pages/getPage.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:pages:read");if(n)return r.status(n.code).json({error:n.msg});if(!a)return r.status(403).json({error:"Insufficient permissions"});const{file:p}=s.query;if(!p)return r.status(400).json({error:"File path is required"});const[u,c]=await t({rootDir:i,file:p});if(u)return r.status(u.code).json({error:u.msg});r.json(c)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\file\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 o from"../../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../../server/utils/pages/movePage.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: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:p,newFile:u}=s.body;if(!p)return r.status(400).json({error:"File path is required"});if(!u)return r.status(400).json({error:"New file path is required"});const[m,c]=await t({rootDir:i,file:p,newFile:u});if(m)return r.status(m.code).json({error:m.msg});r.json(c)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\file\PATCH.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{existsSync as t}from"fs";import{resolve as e,join as s}from"path";import r from"../../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../../server/utils/pages/getPageMetadata.js";import i from"../../../../../server/utils/pages/updatePage.js";const a=t(s(process.cwd(),"public"))?s(process.cwd(),"public"):e(import.meta.dirname,"../../../../../app-public");export default async(t,e)=>{const s=t.cookies.session_token,[n,p]=await r(s,"system:pages:update");if(n)return e.status(n.code).json({error:n.msg});if(!p)return e.status(403).json({error:"Insufficient permissions"});const{file:c,name:u,title:m,description:d,author:f,template:l,contents:g,extraMetadata:j}=t.body;if(!c)return e.status(400).json({error:"File path is required"});const[b,h]=await o({rootDir:a,file:c});if(!b&&h.locked)return e.status(403).json({error:"This page is locked and cannot be edited"});const[w,k]=await i({rootDir:a,file:c,name:u,title:m,description:d,author:f,template:l,contents:g,extraMetadata:j});if(w)return e.status(w.code).json({error:w.msg});e.json(k)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\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/pages/setPageLocked.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: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:c,locked:p}=s.body;if(!c)return r.status(400).json({error:"File path is required"});if("boolean"!=typeof p)return r.status(400).json({error:"locked must be a boolean"});const[u,m]=await t({rootDir:i,file:c,locked:p});if(u)return r.status(u.code).json({error:u.msg});r.json(m)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\lock\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/pages/listPages.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:pages:read");if(n)return r.status(n.code).json({error:n.msg});if(!a)return r.status(403).json({error:"Insufficient permissions"});const[c,p]=await t({rootDir:i,forceRescan:!0});if(c)return r.status(c.code).json({error:c.msg});r.json(p)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\rescan\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/pages/searchByMetadata.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,[a,u]=await t(e,"system:pages:read");if(a)return s.status(a.code).json({error:a.msg});if(!u)return s.status(403).json({error:"Insufficient permissions"});const{query:n}=r.query;if(!n)return s.status(400).json({error:"query parameter is required"});let c;try{c=JSON.parse(n)}catch{return s.status(400).json({error:"query must be valid JSON"})}if("object"!=typeof c||Array.isArray(c)||!c)return s.status(400).json({error:"query must be a JSON object"});const[p,m]=await o({rootDir:i,query:c});if(p)return s.status(p.code).json({error:p.msg});s.json(m)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\search\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 o from"../../../../../server/utils/permissions/currentUserHasPermission.js";import t from"../../../../../server/utils/pages/listTemplates.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,p]=await o(e,"system:pages:read");if(n)return r.status(n.code).json({error:n.msg});if(!p)return r.status(403).json({error:"Insufficient permissions"});const[a,m]=await t({rootDir:i});if(a)return r.status(a.code).json({error:a.msg});r.json(m)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\pages\templates\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../server/utils/permissions/deletePermission.js";export default async(e,n)=>{const t=e.cookies.session_token,{names:o}=e.body;if(!o||!Array.isArray(o)||0===o.length)return n.status(400).json({error:"Names array is required"});const[i,a]=await s(t,"system:permissions:manage");if(i)return n.status(i.code).json({error:i.msg});if(!a)return n.status(403).json({error:"Insufficient permissions"});const u=o.filter(s=>{const r=s.includes(":")?s.split(":")[0]:null;return r&&"admin"!==r});if(u.length)return n.status(403).json({error:`Cannot delete non-admin permissions: ${u.join(", ")}`});const m=[],l=[];for(const s of o){const[e,n]=await r(s);e?l.push({name:s,error:e.msg}):m.push(n)}if(l.length>0)return n.status(207).json({deleted:m,errors:l});n.json({deleted:m})};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\permissions\DELETE.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../server/utils/permissions/getAllPermissions.js";export default async(e,o)=>{const t=e.cookies.session_token,[i,n]=await s(t,"system:permissions:read");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"Insufficient permissions"});const m=parseInt(e.query.limit)||50,u=parseInt(e.query.offset)||0,a=e.query.owner,[f,p]=await r({limit:m,offset:u,owner:a});if(f)return o.status(f.code).json({error:f.msg});o.json(p)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\permissions\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../server/utils/permissions/updatePermission.js";export default async(e,i)=>{const o=e.cookies.session_token,{name:t,description:n}=e.body;if(!t)return i.status(400).json({error:"Permission name is required"});if(t.startsWith("system:"))return i.status(403).json({error:"System permissions cannot be modified"});const[m,a]=await s(o,"system:permissions:manage");if(m)return i.status(m.code).json({error:m.msg});if(!a)return i.status(403).json({error:"Insufficient permissions"});const u={};void 0!==n&&(u.description=n);const[c,d]=await r(t,u);if(c)return i.status(c.code).json({error:c.msg});i.json(d)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\permissions\PATCH.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import r from"../../../../server/utils/permissions/currentUserHasPermission.js";import s from"../../../../server/utils/permissions/createPermission.js";export default async(e,o)=>{const n=e.cookies.session_token,{permissions:t}=e.body;if(!t||!Array.isArray(t)||0===t.length)return o.status(400).json({error:"Permissions array is required"});for(const r of t){if(!r.resource||r.resource.includes(":"))return o.status(400).json({error:`Invalid resource name: "${r.resource}". Cannot be empty or contain ":"`});if(!r.action||r.action.includes(":"))return o.status(400).json({error:`Invalid action: "${r.action}". Cannot be empty or contain ":"`})}const[i,a]=await r(n,"system:permissions:manage");if(i)return o.status(i.code).json({error:i.msg});if(!a)return o.status(403).json({error:"Insufficient permissions"});const c=[],u=[];for(const r of t){const[e,o]=await s({resource:r.resource,action:r.action,description:r.description,owner:"custom"});e?u.push({resource:r.resource,action:r.action,error:e.msg}):c.push(o)}if(u.length>0)return o.status(207).json({created:c,errors:u});o.json({created:c})};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\permissions\POST.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import e from"../../../../server/utils/auth/getSession.js";import r from"../../../../server/utils/realtime/getHub.js";import{TOO_MANY_CONNECTIONS_CODE as n}from"../../../../server/utils/realtime/constants.js";export default async(t,s)=>{const c=t.cookies.session_token,[a,o]=await e({token:c});if(a)return 500===a.code?s.reject(500,"Failed to verify session"):s.reject(401,"Authentication required");const i=r(),u=(e,r)=>s.send(JSON.stringify(e),r);let d=null;s.on("open",()=>{const[e,r]=i.addSubscriber({token:c,user:o.user,path:t.path,deliver:u,close:(e,r)=>s.close(e,r)});e?s.close(429===e.code?n:1011,e.msg):(d=r.id,s.data.userId=o.user.id,u({type:"ready",userId:o.user.id}))}),s.on("message",async(e,r)=>{if(!d)return;let n;try{n=r?null:JSON.parse(e)}catch(e){n=null}if(!n||"object"!=typeof n)return u({type:"error",code:400,msg:"Frames must be JSON objects"});if(i.touch({id:d}),"subscribe"===n.type){const[e]=await i.subscribe({id:d,channel:n.channel,since:n.since});return void(e&&u({type:"error",channel:n.channel,code:e.code,msg:e.msg}))}if("send"===n.type){const[e,r]=await i.handleMessage({id:d,channel:n.channel,data:n.data});if(e)return u({type:"error",channel:n.channel,ref:n.ref,code:e.code,msg:e.msg});if(void 0===n.ref)return;try{return u({type:"ack",channel:n.channel,ref:n.ref,data:r})}catch(e){return u({type:"error",channel:n.channel,ref:n.ref,code:500,msg:"The handler returned something that cannot be sent"})}}if("unsubscribe"===n.type)return i.unsubscribe({id:d,channel:n.channel}),u({type:"unsubscribed",channel:n.channel});u({type:"error",code:400,msg:`Unknown frame type "${n.type}"`})}),s.on("close",e=>{d&&i.removeSubscriber({id:d,reason:e})})};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\realtime\WS.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../server/utils/realtime/listConnections.js";export default async(e,t)=>{const o=e.cookies.session_token,[i,n]=await s(o,"system:realtime:read");if(i)return t.status(i.code).json({error:i.msg});if(!n)return t.status(403).json({error:"Insufficient permissions"});const[m,a]=r();if(m)return t.status(m.code).json({error:m.msg});t.json(a)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\realtime\connections\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../server/utils/settings/listSettings.js";export default async(e,t)=>{const i=e.cookies.session_token,[o,n]=await s(i,"system:settings:read");if(o)return t.status(o.code).json({error:o.msg});if(!n)return t.status(403).json({error:"Insufficient permissions"});const{owner:a}=e.params,m=parseInt(e.query.limit)||50,u=parseInt(e.query.offset)||0,[f,c]=await r({owner:a,limit:m,offset:u});if(f)return t.status(f.code).json({error:f.msg});t.json(c)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\settings\[owner]\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../server/utils/auth/getSession.js";import t from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../../server/utils/settings/deleteSetting.js";export default async(r,o)=>{const n=r.cookies.session_token,[i,a]=await s({token:n});if(i||!a)return o.status(401).json({error:"Unauthorized"});const[m,u]=await t(n,"system:custom-settings:manage");if(m||!u)return o.status(403).json({error:"Forbidden: Cannot delete settings"});const{owner:c,name:d}=r.params,[f,g]=await e(c,d);if(f)return o.status(f.code).json({error:f.msg});o.json(g)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\settings\[owner]\[name]\DELETE.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../server/utils/auth/getSession.js";import t from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/settings/getSettingWithMetadata.js";export default async(e,o)=>{const{owner:i,name:n}=e.params,[a,u]=await r(i,n);if(a)return o.status(a.code).json({error:a.msg});if(!u.isPublic){const r=e.cookies.session_token,[i,n]=await s({token:r});if(i||!n)return o.status(401).json({error:"Unauthorized"});const[a,u]=await t(r,"system:settings:read");if(a||!u)return o.status(403).json({error:"Forbidden"})}o.json(u)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\settings\[owner]\[name]\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../server/utils/auth/getSession.js";import t from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../../server/utils/settings/setSetting.js";import r from"../../../../../../server/utils/settings/getSettingWithMetadata.js";export default async(o,n)=>{const i=o.cookies.session_token,[a,u]=await s({token:i});if(a||!u)return n.status(401).json({error:"Unauthorized"});const{owner:m,name:c}=o.params;if("system"===m){const[s,e]=await t(i,"system:settings:update");if(s||!e)return n.status(403).json({error:"Forbidden: Cannot modify system settings"})}else if("custom"===m){const[s,e]=await t(i,"system:custom-settings:manage");if(s||!e)return n.status(403).json({error:"Forbidden: Cannot manage custom settings"})}else{const[s,e]=await t(i,"system:extensions:manage");if(s||!e)return n.status(403).json({error:"Forbidden: Cannot modify extension settings"})}const{value:d,type:f,isPublic:g,description:j}=o.body;if(void 0===d)return n.status(400).json({error:"Value is required"});if("custom"!==m){const[s,t]=await r(m,c);if(s)return n.status(s.code).json({error:s.msg});const[o,i]=await e(m,c,d,t.type,t.isPublic,t.description);return o?n.status(o.code).json({error:o.msg}):n.json(i)}const[p,l]=await e(m,c,d,f,g,j);if(p)return n.status(p.code).json({error:p.msg});n.json(l)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\settings\[owner]\[name]\POST.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import t from"../../../../../server/utils/settings/getPublicSettings.js";export default async(s,e)=>{const[r,o]=await t();if(r)return e.status(r.code).json({error:r.msg});e.json(o)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\settings\public\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{existsSync as e}from"fs";import{resolve as s,join as t}from"path";import r from"../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../server/utils/templates/getTemplateMetadata.js";import i from"../../../../server/utils/templates/deleteTemplate.js";const n=e(t(process.cwd(),"public"))?t(process.cwd(),"public"):s(import.meta.dirname,"../../../../app-public");export default async(e,s)=>{const t=e.cookies.session_token,[a,m]=await r(t,"system:pages:delete");if(a)return s.status(a.code).json({error:a.msg});if(!m)return s.status(403).json({error:"Insufficient permissions"});const{files:p}=e.body;if(!p?.length)return s.status(400).json({error:"No files specified"});for(const e of p){const[t,r]=await o({rootDir:n,file:e});if(!t&&r.locked)return s.status(403).json({error:`Cannot delete locked template: ${e}`})}const[c,l]=await i({rootDir:n,files:p});if(c)return s.status(c.code).json({error:c.msg});s.json(l)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\templates\DELETE.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/pages/listTemplates.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,p]=await o(e,"system:pages:read");if(n)return r.status(n.code).json({error:n.msg});if(!p)return r.status(403).json({error:"Insufficient permissions"});const[a,m]=await t({rootDir:i});if(a)return r.status(a.code).json({error:a.msg});r.json(m)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\templates\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/templates/createTemplate.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:create");if(n)return s.status(n.code).json({error:n.msg});if(!m)return s.status(403).json({error:"Insufficient permissions"});const{directory:c,name:p,copyFrom:u}=r.body;if(!p)return s.status(400).json({error:"Template name is required"});const[,f]=await o({token:e}),d=f?.user?.name||"",[l,j]=await i({rootDir:a,directory:c,name:p,author:d,copyFrom:u});if(l)return s.status(l.code).json({error:l.msg});s.status(201).json(j)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\templates\POST.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{existsSync as s}from"fs";import{resolve as e,join as r}from"path";import t from"../../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../../server/utils/templates/getTemplateMetadata.js";import i from"../../../../../server/utils/templates/disableTemplate.js";const a=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,[n,p]=await t(r,"system:pages:update");if(n)return e.status(n.code).json({error:n.msg});if(!p)return e.status(403).json({error:"Insufficient permissions"});const{file:m}=s.body||{};if(!m)return e.status(400).json({error:"File path is required"});const[u,c]=await o({rootDir:a,file:m});if(!u&&c.locked)return e.status(403).json({error:"Cannot disable a locked template"});const[l,f]=await i({rootDir:a,file:m});if(l)return e.status(l.code).json({error:l.msg});e.json(f)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\templates\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/templates/enableTemplate.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:p}=s.body||{};if(!p)return r.status(400).json({error:"File path is required"});const[m,u]=await o({rootDir:i,file:p});if(m)return r.status(m.code).json({error:m.msg});r.json(u)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\templates\enable\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/templates/getTemplate.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:read");if(n)return r.status(n.code).json({error:n.msg});if(!a)return r.status(403).json({error:"Insufficient permissions"});const{file:p}=s.query;if(!p)return r.status(400).json({error:"File path is required"});const[m,u]=await o({rootDir:i,file:p});if(m)return r.status(m.code).json({error:m.msg});r.json(u)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\templates\file\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/templates/moveTemplate.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:p,newFile:u}=s.body;if(!p)return r.status(400).json({error:"File path is required"});if(!u)return r.status(400).json({error:"New file path is required"});const[m,c]=await o({rootDir:i,file:p,newFile:u});if(m)return r.status(m.code).json({error:m.msg});r.json(c)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\templates\file\PATCH.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{existsSync as e}from"fs";import{resolve as r,join as s}from"path";import t from"../../../../../server/utils/permissions/currentUserHasPermission.js";import o from"../../../../../server/utils/templates/getTemplateMetadata.js";import i from"../../../../../server/utils/templates/updateTemplate.js";const a=e(s(process.cwd(),"public"))?s(process.cwd(),"public"):r(import.meta.dirname,"../../../../../app-public");export default async(e,r)=>{const s=e.cookies.session_token,[n,m]=await t(s,"system:pages:update");if(n)return r.status(n.code).json({error:n.msg});if(!m)return r.status(403).json({error:"Insufficient permissions"});const{file:p,name:u,author:c,markup:l}=e.body;if(!p)return r.status(400).json({error:"File path is required"});const[f,d]=await o({rootDir:a,file:p});if(!f&&d.locked)return r.status(403).json({error:"This template is locked and cannot be edited"});const[j,k]=await i({rootDir:a,file:p,name:u,author:c,markup:l});if(j)return r.status(j.code).json({error:j.msg});r.json(k)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\templates\file\PUT.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/templates/setTemplateLocked.js";const i=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,[n,a]=await o(r,"system:pages:update");if(n)return e.status(n.code).json({error:n.msg});if(!a)return e.status(403).json({error:"Insufficient permissions"});const{file:p,locked:c}=s.body;if(!p)return e.status(400).json({error:"File path is required"});if("boolean"!=typeof c)return e.status(400).json({error:"locked must be a boolean"});const[u,m]=await t({rootDir:i,file:p,locked:c});if(u)return e.status(u.code).json({error:u.msg});e.json(m)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\templates\lock\PUT.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../server/utils/updates/getUpdateStatus.js";export default async(r,t)=>{const[o,i]=await s(r.cookies.session_token,"system:updates:manage");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({offline:"true"===r.query.offline});if(n)return t.status(n.code).json({error:n.msg});t.json(a)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\updates\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/updates/applyUpdate.js";import r from"../../../../../server/utils/updates/applyStagedUpdate.js";export default async(t,o)=>{const[i,n]=await s(t.cookies.session_token,"system:updates:manage");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"Insufficient permissions"});const[a,d]=process.env.KEMPO_SITE_ROOT?await r({confirm:t.body?.confirm||{}}):await e({version:null===t.body?.version?null:t.body?.version||"latest",extensions:Array.isArray(t.body?.extensions)?t.body.extensions:[]});if(a)return o.status(a.code).json({error:a.msg,...a.details?{details:a.details}:{}});o.json(d)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\updates\apply\POST.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../server/utils/updates/getUpdateStatus.js";export default async(e,t)=>{const[o,i]=await s(e.cookies.session_token,"system:updates:manage");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 r({force:!0});if(n)return t.status(n.code).json({error:n.msg});t.json(a)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\updates\check\POST.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/updates/discardUpdate.js";export default async(r,t)=>{const[i,o]=await s(r.cookies.session_token,"system:updates:manage");if(i)return t.status(i.code).json({error:i.msg});if(!o)return t.status(403).json({error:"Insufficient permissions"});const[a,n]=await e();if(a)return t.status(a.code).json({error:a.msg,...a.details?{details:a.details}:{}});t.json(n)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\updates\discard\POST.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/updates/prepareUpdate.js";export default async(r,t)=>{const[o,n]=await s(r.cookies.session_token,"system:updates:manage");if(o)return t.status(o.code).json({error:o.msg});if(!n)return t.status(403).json({error:"Insufficient permissions"});const[i,a]=await e({version:null===r.body?.version?null:r.body?.version||"latest",extensions:Array.isArray(r.body?.extensions)?r.body.extensions:[]});if(i)return t.status(i.code).json({error:i.msg,...i.details?{details:i.details}:{}});t.json(a)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\updates\prepare\POST.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../server/utils/updates/rollbackUpdate.js";export default async(e,t)=>{const[o,i]=await s(e.cookies.session_token,"system:updates:manage");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 r({confirm:e.body?.confirm||{}});if(n)return t.status(n.code).json({error:n.msg,...n.details?{details:n.details}:{}});t.json(a)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\updates\rollback\POST.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../server/utils/users/deleteUser.js";export default async(e,t)=>{try{const o=e.cookies.session_token,{ids:n}=e.body;if(!n||!Array.isArray(n)||0===n.length)return t.status(400).json({error:"IDs array is required"});const[i,u]=await s(o,"system:user:delete");if(i)return t.status(i.code).json({error:i.msg});if(!u)return t.status(403).json({error:"Insufficient permissions"});const a=[],c=[];for(const s of n){const[e,t]=await r(s);e?c.push({id:s,error:e.msg}):a.push(t)}if(c.length>0)return t.status(207).json({deleted:a,errors:c});t.json({deleted:a})}catch(s){t.status(500).json({error:s.message})}};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\DELETE.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../server/utils/users/getUsers.js";export default async(e,t)=>{const o=e.cookies.session_token,[i,n]=await s(o,"system:user:read");if(i)return t.status(i.code).json({error:i.msg});if(!n)return t.status(403).json({error:"You do not have permission to view users"});const u=parseInt(e.query.limit)||50,a=parseInt(e.query.offset)||0,[m,f]=await r({limit:u,offset:a});if(m)return t.status(m.code).json({error:m.msg});t.json(f)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import e from"../../../../server/utils/permissions/currentUserHasPermission.js";import s from"../../../../server/utils/users/updateUser.js";export default async(r,i)=>{const t=r.cookies.session_token,{id:o,name:n,email:a,emailVerified:u,createdAt:d}=r.body;if(!o)return i.status(400).json({error:"User ID is required"});const[m,c]=await e(t,"system:user:update");if(m)return i.status(m.code).json({error:m.msg});if(!c)return i.status(403).json({error:"Insufficient permissions"});const f={};void 0!==n&&(f.name=n),void 0!==a&&(f.email=a),void 0!==u&&(f.emailVerified=u),void 0!==d&&(f.createdAt=new Date(d));const[j,l]=await s(o,f);if(j)return i.status(j.code).json({error:j.msg});i.json(l)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\PATCH.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../server/utils/users/getUserById.js";export default async(e,t)=>{const o=e.cookies.session_token,[i,n]=await s(o,"system:user:read");if(i)return t.status(i.code).json({error:i.msg});if(!n)return t.status(403).json({error:"Insufficient permissions"});const{userid:u}=e.params,[a,m]=await r(u);if(a)return t.status(a.code).json({error:a.msg});t.json(m)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import r from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import s from"../../../../../../server/utils/groups/removeUserFromGroup.js";export default async(e,o)=>{const t=e.cookies.session_token,[i,n]=await r(t,"system:group:update");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"Insufficient permissions"});const{userid:u}=e.params,{groupName:a}=e.body;if(!a)return o.status(400).json({error:"Group name is required"});const[m,p]=await s(u,a);if(m)return o.status(m.code).json({error:m.msg});o.json(p)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\groups\DELETE.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/permissions/getUserGroups.js";export default async(e,t)=>{const o=e.cookies.session_token,[i,n]=await s(o,"system:group:read");if(i)return t.status(i.code).json({error:i.msg});if(!n)return t.status(403).json({error:"Insufficient permissions"});const{userid:u}=e.params,[a,m]=await r(u);if(a)return t.status(a.code).json({error:a.msg});const f=parseInt(e.query.limit)||50,p=parseInt(e.query.offset)||0,c=m.length;t.json({groups:m.slice(p,p+f),total:c,limit:f,offset:p})};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\groups\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,[i,n]=await s(t,"system:group:update");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"Insufficient permissions"});const{userid:u}=e.params,{groupName:a}=e.body;if(!a)return o.status(400).json({error:"Group name is required"});const[m,p]=await r(u,a);if(m)return o.status(m.code).json({error:m.msg});o.json(p)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\groups\POST.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../server/utils/users/getUserById.js";export default async(r,e)=>{const{userid:t}=r.params,[a,o]=await s(t);if(a)return e.status(a.code).json({error:a.msg});e.json({name:o.name})};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\name\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../server/utils/auth/getSession.js";import r from"../../../../../../server/utils/permissions/getUserPermission.js";import e from"../../../../../../server/utils/permissions/getUserPermissions.js";import o from"../../../../../../server/utils/permissions/userHasPermission.js";export default async(i,t)=>{try{const n=i.cookies.session_token,[u,a]=await s({token:n});if(u||!a||!a.user)return t.status(401).json({error:"Unauthorized"});const{userid:m}=i.params,c="current"===m?a.user.id:m;if("current"!==m){const[s,r]=await o(a.user.id,"system:permissions:read");if(s||!r)return t.status(403).json({error:"Forbidden"})}const p=i.query.permission;if(p){const[s,e]=await r(c,p);return s?t.status(s.code).json({error:s.msg}):t.json({hasPermission:e})}const[j,d]=await e(c);if(j)return t.status(j.code).json({error:j.msg});t.json({permissions:d})}catch(s){console.error("Get user permission error:",s),t.status(500).json({error:s.message})}};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\permissions\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../../server/utils/auth/getSession.js";import r from"../../../../../../../server/utils/permissions/getUserPermissions.js";import e from"../../../../../../../server/utils/permissions/userHasPermission.js";export default async(o,t)=>{try{const i=o.query.permissions;if(!i)return t.status(400).json({error:"permissions parameter required"});const n=o.cookies.session_token,[a,m]=await s({token:n});if(a||!m||!m.user)return t.status(401).json({error:"Unauthorized"});const{userid:u}=o.params,c="current"===u?m.user.id:u;if("current"!==u){const[s,r]=await e(m.user.id,"system:permissions:read");if(s||!r)return t.status(403).json({error:"Forbidden"})}const p=i.split(",").map(s=>s.trim()),[d,f]=await r(c);if(d)return t.status(d.code).json({error:d.msg});const j=new Set(f.map(s=>s.name)),l=p.every(s=>j.has(s));t.json({hasPermission:l})}catch(s){console.error("Check all permissions error:",s),t.status(500).json({error:s.message})}};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\permissions\all\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../../server/utils/auth/getSession.js";import r from"../../../../../../../server/utils/permissions/getAllPermissions.js";import e from"../../../../../../../server/utils/permissions/getUserPermissions.js";import o from"../../../../../../../server/utils/permissions/getUserGroups.js";export default async(t,i)=>{try{const n=t.cookies.session_token,[a,m]=await s({token:n});if(a||!m||!m.user)return i.status(401).json({error:"Unauthorized"});const u="current"===t.params.userid?m.user.id:parseInt(t.params.userid);if(!u)return i.status(400).json({error:"Invalid user ID"});const[p,c]=await o(u);if(p)return i.status(p.code).json({error:p.msg});if(c.some(s=>"system:Administrators"===s.name)){const[s,e]=await r({limit:1e4,offset:0});return s?i.status(s.code).json({error:s.msg}):i.json({permissions:e.permissions.map(s=>s.name)})}const[f,j]=await e(u);if(f)return i.status(f.code).json({error:f.msg});i.json({permissions:j})}catch(s){console.error("List user permissions error:",s),i.status(500).json({error:s.message})}};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\permissions\list\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../../server/utils/auth/getSession.js";import r from"../../../../../../../server/utils/permissions/getUserPermissions.js";import e from"../../../../../../../server/utils/permissions/userHasPermission.js";export default async(o,t)=>{try{const i=o.query.permissions;if(!i)return t.status(400).json({error:"permissions parameter required"});const n=o.cookies.session_token,[a,m]=await s({token:n});if(a||!m||!m.user)return t.status(401).json({error:"Unauthorized"});const{userid:u}=o.params,c="current"===u?m.user.id:u;if("current"!==u){const[s,r]=await e(m.user.id,"system:permissions:read");if(s||!r)return t.status(403).json({error:"Forbidden"})}const p=i.split(",").map(s=>s.trim()),[d,f]=await r(c);if(d)return t.status(d.code).json({error:d.msg});const j=new Set(f.map(s=>s.name)),h=p.some(s=>j.has(s));t.json({hasPermission:h})}catch(s){console.error("Check some permissions error:",s),t.status(500).json({error:s.message})}};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\permissions\some\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../../server/utils/sessions/deleteSession.js";export default async(r,o)=>{const t=r.cookies.session_token,[n,i]=await s(t,"system:user:update");if(n)return o.status(n.code).json({error:n.msg});if(!i)return o.status(403).json({error:"Insufficient permissions"});const{sessionToken:u}=r.body;if(!u)return o.status(400).json({error:"Session token is required"});const[a,m]=await e(u);if(a)return o.status(a.code).json({error:a.msg});o.json(m)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\sessions\DELETE.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../server/utils/sessions/getUserSessions.js";export default async(e,t)=>{const o=e.cookies.session_token,[i,n]=await s(o,"system:user:read");if(i)return t.status(i.code).json({error:i.msg});if(!n)return t.status(403).json({error:"Insufficient permissions"});const{userid:a}=e.params,u=parseInt(e.query.limit)||50,m=parseInt(e.query.offset)||0,[f,c]=await r(a,{limit:u,offset:m});if(f)return t.status(f.code).json({error:f.msg});t.json(c)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\sessions\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../../../server/utils/sessions/deleteExpiredUserSessions.js";export default async(e,o)=>{const t=e.cookies.session_token,[i,n]=await s(t,"system:user:update");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"Insufficient permissions"});const{userid:u}=e.params,[a,m]=await r(u);if(a)return o.status(a.code).json({error:a.msg});o.json(m)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\[userid]\sessions\expired\DELETE.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import e from"../../../../../server/utils/users/createUser.js";export default async(r,t)=>{try{const o=r.cookies.session_token,{name:i,email:a,password:n,emailVerified:m}=r.body,[u,c]=await s(o,"system:user:create");if(u)return t.status(u.code).json({error:u.msg});if(!c)return t.status(403).json({error:"Insufficient permissions"});const[f,d]=await e({name:i,email:a,password:n,emailVerified:m});if(f)return t.status(f.code).json({error:f.msg});t.json(d)}catch(s){t.status(500).json({error:s.message})}};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\create\POST.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"../../../../../server/utils/permissions/currentUserHasPermission.js";import r from"../../../../../server/utils/users/searchUsers.js";export default async(e,o)=>{const t=e.cookies.session_token,[i,n]=await s(t,"system:user:read");if(i)return o.status(i.code).json({error:i.msg});if(!n)return o.status(403).json({error:"You do not have permission to view users"});const u=e.query.q||"",a=Math.min(parseInt(e.query.limit)||20,100),m=parseInt(e.query.offset)||0,p=e.query.inGroup||void 0,f=e.query.notInGroup||void 0,[c,d]=await r({q:u,limit:a,offset:m,inGroup:p,notInGroup:f});if(c)return o.status(c.code).json({error:c.msg});o.json(d)};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\user\search\GET.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export default class e extends HTMLElement{#e=null;connectedCallback(){this.#e=this.closest("k-aside"),this.#e?.addEventListener("aside_state_change",this.handleStateChange),this.applyState(this.#e?.state)}disconnectedCallback(){this.#e?.removeEventListener("aside_state_change",this.handleStateChange),this.#e=null}handleStateChange=e=>this.applyState(e.detail.state);applyState=e=>{const t="collapsed"===e;this.classList.toggle("d-f",!t),this.classList.toggle("d-b",t),this.classList.toggle("ta-center",t),this.style.alignItems=t?"":"center"}}customElements.define("k-admin-nav-footer",e);
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\AdminNavFooter.js.map
|
|
@@ -15,4 +15,4 @@ import e from"/kempo-ui/components/LightComponent.js";import{html as t,nothing a
|
|
|
15
15
|
${this.renderFooter()}
|
|
16
16
|
</div>
|
|
17
17
|
`}}
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\DashboardWidget.js.map
|
|
@@ -15,4 +15,4 @@ import e from"/kempo-ui/components/LightComponent.js";import{html as s}from"/kem
|
|
|
15
15
|
<p class="mt"><a href="/forgot-password">Forgot Password?</a></p>
|
|
16
16
|
<p class="mt">Don't have an account? <a href="/register">Register</a></p>
|
|
17
17
|
`}}customElements.define("k-login",a);
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\Login.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import t from"/kempo-ui/components/LightComponent.js";import{logout as e}from"../sdk.js";export default class o extends t{static get properties(){return{redirect:{type:String},buttonClass:{type:String,attribute:"button-class"}}}connectedCallback(){this.buttonText=this.textContent.trim()||"Logout",this.innerHTML="",super.connectedCallback()}updated(t){super.updated(t)}handleLogout=async()=>{const[t]=await e();t?console.error("Logout failed:",t.msg):this.redirect&&(window.location.href=this.redirect)};renderLightDom(){const t=document.createElement("button");return t.type="button",t.className=this.buttonClass?`kempo-component-logout ${this.buttonClass}`:"kempo-component-logout",t.textContent=this.buttonText,t.addEventListener("click",this.handleLogout),t}}customElements.define("k-logout-btn",o);
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\LogoutBtn.js.map
|
|
@@ -14,4 +14,4 @@ import e from"/kempo-ui/components/LightComponent.js";import{html as t}from"/kem
|
|
|
14
14
|
<ul>${this.menuData.items.map(e=>this.renderItem(e))}</ul>
|
|
15
15
|
</nav>
|
|
16
16
|
`:t``}}customElements.define("k-menu",s);
|
|
17
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\Menu.js.map
|
|
@@ -14,4 +14,4 @@ import t from"/kempo-ui/components/LightComponent.js";import{html as i,nothing a
|
|
|
14
14
|
</div>
|
|
15
15
|
</k-dropdown>
|
|
16
16
|
`}}customElements.define("k-notification-bell",o);
|
|
17
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\NotificationBell.js.map
|
|
@@ -18,4 +18,4 @@ import t from"/kempo-ui/components/LightComponent.js";import{html as i,nothing a
|
|
|
18
18
|
<k-pagination class="d-b my" controls="simple" .page=${this.page} .totalItems=${this.total} .itemsPerPage=${this.pageSize} @page-change=${this.handlePageChange}></k-pagination>
|
|
19
19
|
`:e}
|
|
20
20
|
`:i`<p class="p tc-muted">${this.unreadOnly?"No unread notifications.":"No notifications."}</p>`}}customElements.define("k-notification-list",p);
|
|
21
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\NotificationList.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"/kempo-ui/components/LightComponent.js";import{html as i}from"/kempo-ui/lit-all.min.js";import{currentUserHasPermission as t,currentUserHasAllPermissions as e,currentUserHasSomePermissions as o}from"../sdk.js";export default class n extends s{static properties={has:{type:String},all:{type:String},some:{type:String},loading:{type:Boolean,state:!0},hasPermission:{type:Boolean,state:!0}};constructor(){super(),this.has="",this.all="",this.some="",this.loading=!0,this.hasPermission=!1}async connectedCallback(){super.connectedCallback(),await this.checkPermissions()}async checkPermissions(){const s=[this.has,this.all,this.some].filter(Boolean).length;if(s>1)return this.hasPermission=!1,void(this.loading=!1);if(0===s)return this.hasPermission=!0,void(this.loading=!1);try{if(this.has){const[s,i]=await t({permission:this.has});this.hasPermission=!s&&i.hasPermission}else if(this.all){const s=this.all.split(",").map(s=>s.trim()),[i,t]=await e({permissions:s});this.hasPermission=!i&&t.hasPermission}else{const s=this.some.split(",").map(s=>s.trim()),[i,t]=await o({permissions:s});this.hasPermission=!i&&t.hasPermission}}catch(s){this.hasPermission=!1}finally{this.loading=!1}}renderLightDom(){return this.loading?(this.style.display="none",i``):this.hasPermission?(this.style.display="",i`<slot></slot>`):(this.style.display="none",i``)}}window.customElements.define("k-permission",n);
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\Permission.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import s from"/kempo-ui/components/LightComponent.js";import{currentUserHasPermission as t,currentUserHasAllPermissions as i,currentUserHasSomePermissions as e}from"../sdk.js";export default class a extends s{static properties={has:{type:String},all:{type:String},some:{type:String},target:{type:String}};constructor(){super(),this.has="",this.all="",this.some="",this.target=""}async connectedCallback(){super.connectedCallback(),this.style.display="none",await this.applyPermission()}async applyPermission(){let s=!1;if(1===[this.has,this.all,this.some].filter(Boolean).length)try{if(this.has){const[i,e]=await t({permission:this.has});s=!i&&e.hasPermission}else if(this.all){const t=this.all.split(",").map(s=>s.trim()),[e,a]=await i({permissions:t});s=!e&&a.hasPermission}else{const t=this.some.split(",").map(s=>s.trim()),[i,a]=await e({permissions:t});s=!i&&a.hasPermission}}catch(t){s=!1}this.setTargetsVisible(s)}setTargetsVisible(s){if(this.target)for(const t of document.querySelectorAll(this.target))t.style.display=s?"":"none"}}window.customElements.define("k-permission-target",a);
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\PermissionTarget.js.map
|
|
@@ -18,4 +18,4 @@ import e from"/kempo-ui/components/LightComponent.js";import{html as t}from"/kem
|
|
|
18
18
|
${this.extra}
|
|
19
19
|
<p class="mt">Already have an account? <a href="/login">Login</a></p>
|
|
20
20
|
`}}customElements.define("k-register",a);
|
|
21
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\Register.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import e from"/kempo-ui/components/LightComponent.js";import{html as t}from"/kempo-ui/lit-all.min.js";import{checkRole as o}from"../sdk.js";export default class s extends e{static properties={requires:{type:String},exclude:{type:String},loading:{type:Boolean,state:!0},hasRole:{type:Boolean,state:!0}};constructor(){super(),this.requires="",this.exclude="",this.loading=!0,this.hasRole=!1}async connectedCallback(){super.connectedCallback(),await this.checkRole()}async checkRole(){try{const e=await o({requires:this.requires||void 0,exclude:this.exclude||void 0});this.hasRole=e.hasRole}catch(e){console.error("Role check failed:",e),this.hasRole=!1}finally{this.loading=!1}}renderLightDom(){return this.loading?t``:this.hasRole?t`<slot></slot>`:t``}}window.customElements.define("k-role",s);
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\Role.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import e from"/kempo-ui/components/LightComponent.js";import{getSession as t}from"../sdk.js";export default class o extends e{connectedCallback(){super.connectedCallback(),this.loadCreatedAt()}async loadCreatedAt(){const[e,o]=await t();if(e)return console.error("Failed to load user created date:",e.msg),void(this.textContent="");const n=new Date(o?.user?.createdAt);this.textContent=n.toLocaleDateString()}renderLightDom(){return"Loading..."}}customElements.define("k-user-created-at",o);
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\UserCreatedAt.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import t from"/kempo-ui/components/LightComponent.js";export default class e extends t{static properties={userId:{type:String,attribute:"user-id",reflect:!0}};constructor(){super(),this.userId=""}updated(t){super.updated?.(t),t.has("userId")&&this.userId&&this.load()}async load(){try{const t=await fetch(`/kempo/api/user/${this.userId}/name`);if(!t.ok)return;const{name:e}=await t.json();this.textContent=e||this.userId}catch{this.textContent=this.userId}}renderLightDom(){return this.userId}}customElements.define("k-user-display-name",e);
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\UserDisplayName.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import e from"/kempo-ui/components/LightComponent.js";import{getSession as t}from"../sdk.js";export default class o extends e{connectedCallback(){super.connectedCallback(),this.loadUserEmail()}async loadUserEmail(){const[e,o]=await t();if(e)return console.error("Failed to load user email:",e.msg),void(this.textContent="");this.textContent=o?.user?.email||""}renderLightDom(){return"Loading..."}}customElements.define("k-user-email",o);
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\UserEmail.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import e from"/kempo-ui/components/LightComponent.js";import{getSession as t}from"../sdk.js";export default class i extends e{connectedCallback(){super.connectedCallback(),this.loadEmailVerified()}async loadEmailVerified(){const[e,i]=await t();if(e)return console.error("Failed to load email verified status:",e.msg),void(this.textContent="");this.textContent=i?.user?.emailVerified?"Yes":"No"}renderLightDom(){return"Loading..."}}customElements.define("k-user-email-verified",i);
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\UserEmailVerified.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import e from"/kempo-ui/components/LightComponent.js";import{getSession as t}from"../sdk.js";export default class o extends e{connectedCallback(){super.connectedCallback(),this.loadUserName()}async loadUserName(){const[e,o]=await t();if(e)return console.error("Failed to load user name:",e.msg),void(this.textContent="");this.textContent=o?.user?.name||""}renderLightDom(){return"Loading..."}}customElements.define("k-user-name",o);
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\components\UserName.js.map
|
package/dist/kempo/fetch.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const e=new Map,t=async(t,a)=>{const r=((e,t={})=>`${t.method||"GET"}:${e}:${t.body||""}`)(t,a);if(e.has(r)){const t=e.get(r);return new Promise((e,a)=>{t.callbacks.add({resolve:e,reject:a})}).then(async e=>{if(!e.ok){let t;try{t=await e.json()}catch(t){return[{code:e.status,msg:"Service temporarily unavailable. Please try again later."},null]}return[{code:e.status,msg:t.error||t.message||"An error occurred",...t.details?{details:t.details}:{}},null]}try{return[null,await e.json()]}catch(e){return[{code:500,msg:"Service temporarily unavailable. Please try again later."},null]}})}const n=new Set,o=fetch(t,a).then(t=>(n.forEach(({resolve:e})=>e(t.clone())),e.delete(r),t)).catch(t=>{throw n.forEach(({reject:e})=>e(t)),e.delete(r),t});e.set(r,{fetchPromise:o,callbacks:n});try{const e=await o;if(!e.ok){let t;try{t=await e.json()}catch(t){return[{code:e.status,msg:"Service temporarily unavailable. Please try again later."},null]}return[{code:e.status,msg:t.error||t.message||"An error occurred",...t.details?{details:t.details}:{}},null]}try{return[null,await e.json()]}catch(e){return[{code:500,msg:"Service temporarily unavailable. Please try again later."},null]}}catch(e){return"Service temporarily unavailable. Please try again later."===e.message||e.message.includes("Failed to fetch")?[{code:503,msg:"Service temporarily unavailable. Please try again later."},null]:[{code:500,msg:e.message||"An error occurred"},null]}};export const get=(e,a)=>{if(a){const r=Object.entries(a).filter(([,e])=>null!=e);if(r.length){const a=r.map(([e,t])=>Array.isArray(t)?`${encodeURIComponent(e)}=${t.map(e=>encodeURIComponent(e)).join(",")}`:`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&");return t(`${e}?${a}`,{method:"GET"})}}return t(e,{method:"GET"})};export const post=(e,a)=>t(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});export const put=(e,a)=>t(e,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});export const patch=(e,a)=>t(e,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});export const del=(e,a)=>t(e,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\fetch.js.map
|
package/dist/kempo/realtime.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const e=1001,t=async()=>{try{const e=await fetch("/kempo/api/auth/session");if(!e.ok)return!0;const t=await e.json();return Boolean(t.user)}catch(e){return!0}};export class RealtimeClient{#e;#t;#s;#i;#n;#r;#o=null;#a="idle";#d=0;#c=null;#h=!1;#l=new Map;#u={status:new Set,ready:new Set,direct:new Set};#p=new Map;#f=1;userId=null;constructor({url:e,WebSocket:s=globalThis.WebSocket,checkSession:i=t,backoff:n={},random:r=Math.random}={}){this.#e=e,this.#t=s,this.#s=i,this.#i=n.base??1e3,this.#n=n.max??3e4,this.#r=r}get status(){return this.#a}onStatus=e=>(this.#u.status.add(e),()=>this.#u.status.delete(e));onReady=e=>(this.#u.ready.add(e),this.userId&&e(this.userId),()=>this.#u.ready.delete(e));onDirect=e=>(this.#u.direct.add(e),()=>this.#u.direct.delete(e));send=(e,t,{timeout:s=1e4}={})=>new Promise((i,n)=>{if(1!==this.#o?.readyState)return void n({code:503,msg:"Not connected"});const r=this.#f++,o=setTimeout(()=>{this.#p.delete(r),n({code:504,msg:"No reply from the server"})},s);this.#p.set(r,{resolve:i,reject:n,timer:o}),this.#m({type:"send",channel:e,data:t,ref:r})});subscribe=(e,t,{since:s,onGap:i,onError:n,onSubscribed:r}={})=>{let o=this.#l.get(e);return o||(o={handlers:new Set,gapHandlers:new Set,errorHandlers:new Set,subscribedHandlers:new Set,lastId:s??null,failed:!1,confirmed:!1},this.#l.set(e,o)),o.handlers.add(t),i&&o.gapHandlers.add(i),n&&o.errorHandlers.add(n),r&&o.subscribedHandlers.add(r),1===o.handlers.size?this.#b(e,o):r&&o.confirmed&&queueMicrotask(()=>this.#y(()=>r({channel:e}))),()=>{o.handlers.delete(t),i&&o.gapHandlers.delete(i),n&&o.errorHandlers.delete(n),r&&o.subscribedHandlers.delete(r),o.handlers.size||(this.#l.delete(e),this.#m({type:"unsubscribe",channel:e}))}};start=()=>{this.#o||this.#h||this.#g()};close=()=>{this.#h=!0,clearTimeout(this.#c),this.#c=null,this.#S({code:503,msg:"Client closed"}),this.#k("closed"),this.#o?.close(1e3),this.#o=null};#g=()=>{this.#k(this.#d>0?"reconnecting":"connecting");let e=!1,t=!1;const s=new this.#t(this.#e??`${"https:"===location.protocol?"wss:":"ws:"}//${location.host}/kempo/api/realtime`);this.#o=s;const i=i=>{t||(t=!0,this.#o===s&&(this.#o=null),this.#S({code:503,msg:"Connection lost"}),this.#w(i,e))};s.addEventListener("open",()=>{e=!0,this.#d=0,this.#k("open");for(const[e,t]of this.#l)t.confirmed=!1,this.#b(e,t)}),s.addEventListener("message",e=>this.#v(e.data)),s.addEventListener("close",e=>i(e.code)),s.addEventListener("error",()=>{e||i(1006)})};#w=async(t,s)=>{if(this.#h)return;if(4401===t)return this.#h=!0,void this.#k("unauthenticated");if(4429===t)return this.#h=!0,void this.#k("refused");if(!s&&t!==e){const e=await this.#s();if(this.#h)return;if(!1===e)return this.#h=!0,void this.#k("unauthenticated")}this.#k("reconnecting"),this.#d+=t===e?0:1;const i=Math.min(this.#n,this.#i*2**Math.max(0,this.#d-1)),n=t===e?Math.min(250,this.#i):i*(.5+.5*this.#r());this.#c=setTimeout(()=>{this.#c=null,this.#h||this.#g()},n)};#b=(e,t)=>{if(t.failed)return;const s={type:"subscribe",channel:e};null!==t.lastId&&(s.since=t.lastId),this.#m(s)};#m=e=>{1===this.#o?.readyState&&this.#o.send(JSON.stringify(e))};#v=e=>{let t;try{t=JSON.parse(e)}catch(e){return}if("ready"===t.type){this.userId=t.userId;for(const e of this.#u.ready)e(t.userId);return}if("direct"===t.type){for(const e of this.#u.direct)this.#y(()=>e(t.data));return}if(("ack"===t.type||"error"===t.type)&&void 0!==t.ref){const e=this.#p.get(t.ref);if(!e)return;return this.#p.delete(t.ref),clearTimeout(e.timer),void("ack"===t.type?e.resolve(t.data):e.reject({code:t.code,msg:t.msg}))}const s=this.#l.get(t.channel);if(s)if("subscribed"!==t.type)if("message"!==t.type)if("gap"!==t.type){if("error"===t.type){s.failed=!0;for(const e of s.errorHandlers)this.#y(()=>e({channel:t.channel,code:t.code,msg:t.msg}))}}else for(const e of s.gapHandlers)this.#y(()=>e({channel:t.channel}));else{void 0!==t.id&&(s.lastId=t.id);for(const e of s.handlers)this.#y(()=>e(t.data,{channel:t.channel,id:t.id}))}else{s.confirmed=!0;for(const e of s.subscribedHandlers)this.#y(()=>e({channel:t.channel}))}};#S=e=>{for(const[t,s]of this.#p)clearTimeout(s.timer),s.reject(e),this.#p.delete(t)};#y=e=>{try{e()}catch(e){console.error("[kempo realtime] a handler threw:",e)}};#k=e=>{if(this.#a!==e){this.#a=e;for(const t of this.#u.status)this.#y(()=>t(e))}}}export const connect=e=>{const t=new RealtimeClient(e);return t.start(),t};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\realtime.js.map
|