kempo 4.2.3 → 4.2.5
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/LICENSE.md +60 -0
- package/README.md +427 -0
- package/app-drizzle.config.js +14 -0
- package/app-public/.config.json +25 -0
- package/app-public/account/index.page.html +110 -0
- package/app-public/account/split2.template.html +36 -0
- package/app-public/default.template.html +24 -0
- package/app-public/forgot-password/index.page.html +79 -0
- package/app-public/index.page.html +16 -0
- package/app-public/init.js +2 -0
- package/app-public/kempo-global.global-disabled.html +0 -0
- package/app-public/kempo-global.global.html +6 -0
- package/app-public/login/index.page.html +51 -0
- package/app-public/manifest.json +87 -0
- package/app-public/media/hexagon.svg +22 -0
- package/app-public/media/icon-maskable.png +0 -0
- package/app-public/media/icon.svg +1 -0
- package/app-public/media/icon128.png +0 -0
- package/app-public/media/icon144.png +0 -0
- package/app-public/media/icon152.png +0 -0
- package/app-public/media/icon16-48.svg +19 -0
- package/app-public/media/icon16.png +0 -0
- package/app-public/media/icon192.png +0 -0
- package/app-public/media/icon256.png +0 -0
- package/app-public/media/icon32.png +0 -0
- package/app-public/media/icon384.png +0 -0
- package/app-public/media/icon48.png +0 -0
- package/app-public/media/icon512.png +0 -0
- package/app-public/media/icon64.png +0 -0
- package/app-public/media/icon72.png +0 -0
- package/app-public/media/icon96.png +0 -0
- package/app-public/media/kempo-fist.svg +21 -0
- package/app-public/media/nsx.jpg +0 -0
- package/app-public/nav.fragment.html +41 -0
- package/app-public/new-page.page.html +17 -0
- package/app-public/register/index.page.html +60 -0
- package/app-public/reset-password/[token]/index.html +123 -0
- package/app-public/reset-password/[token]/index.page.html +75 -0
- package/app-public/styles.css +1 -0
- package/app-public/test.page.html +20 -0
- package/app-public/verify-email/[token]/index.html +107 -0
- package/app-public/verify-email/[token]/index.page.html +59 -0
- package/app-public/verify-email/index.page.html +21 -0
- package/app-server/db/schema.js +19 -0
- package/bin/cli.js +461 -0
- package/dist/admin/accounts/groups/[name]/index.page.html +286 -0
- package/dist/admin/accounts/groups/index.page.html +171 -0
- package/dist/admin/accounts/permissions/index.page.html +193 -0
- package/dist/admin/accounts/users/[id]/index.page.html +314 -0
- package/dist/admin/accounts/users/index.page.html +160 -0
- package/dist/admin/components/AddGroupControl.js +6 -0
- package/dist/admin/components/AddGroupControl.js.map +1 -0
- package/dist/admin/components/ClearExpiredSessionsControl.js +6 -0
- package/dist/admin/components/ClearExpiredSessionsControl.js.map +1 -0
- package/dist/admin/components/FragmentEditor.js +101 -0
- package/dist/admin/components/FragmentEditor.js.map +1 -0
- package/dist/admin/components/GlobalContentEditor.js +85 -0
- package/dist/admin/components/GlobalContentEditor.js.map +1 -0
- package/dist/admin/components/GroupDeleteSelected.js +6 -0
- package/dist/admin/components/GroupDeleteSelected.js.map +1 -0
- package/dist/admin/components/GroupRemoveRecord.js +6 -0
- package/dist/admin/components/GroupRemoveRecord.js.map +1 -0
- package/dist/admin/components/Monaco.js +2 -0
- package/dist/admin/components/Monaco.js.map +1 -0
- package/dist/admin/components/PageEditor.js +138 -0
- package/dist/admin/components/PageEditor.js.map +1 -0
- package/dist/admin/components/TableRowDelete.js +4 -0
- package/dist/admin/components/TableRowDelete.js.map +1 -0
- package/dist/admin/components/TableRowLink.js +8 -0
- package/dist/admin/components/TableRowLink.js.map +1 -0
- package/dist/admin/components/TemplateEditor.js +125 -0
- package/dist/admin/components/TemplateEditor.js.map +1 -0
- package/dist/admin/components/ValueEditor.js +40 -0
- package/dist/admin/components/ValueEditor.js.map +1 -0
- package/dist/admin/components/tableControls/AddMember.js +6 -0
- package/dist/admin/components/tableControls/AddMember.js.map +1 -0
- package/dist/admin/components/tableControls/AddPermission.js +6 -0
- package/dist/admin/components/tableControls/AddPermission.js.map +1 -0
- package/dist/admin/components/tableControls/InstallExtension.js +6 -0
- package/dist/admin/components/tableControls/InstallExtension.js.map +1 -0
- package/dist/admin/components/tableControls/UninstallExtension.js +6 -0
- package/dist/admin/components/tableControls/UninstallExtension.js.map +1 -0
- package/dist/admin/content/fragments/edit/index.page.html +4 -0
- package/dist/admin/content/fragments/index.page.html +169 -0
- package/dist/admin/content/globals/edit/index.page.html +4 -0
- package/dist/admin/content/globals/index.page.html +152 -0
- package/dist/admin/content/pages/edit/index.page.html +4 -0
- package/dist/admin/content/pages/index.page.html +218 -0
- package/dist/admin/content/templates/edit/index.page.html +4 -0
- package/dist/admin/content/templates/index.page.html +193 -0
- package/dist/admin/default.template.html +9 -0
- package/dist/admin/extensions/index.page.html +32 -0
- package/dist/admin/icons/article.svg +1 -0
- package/dist/admin/icons/browse.svg +1 -0
- package/dist/admin/icons/cards_stack.svg +1 -0
- package/dist/admin/icons/content.svg +1 -0
- package/dist/admin/icons/docs.svg +1 -0
- package/dist/admin/icons/drive_file_move.svg +1 -0
- package/dist/admin/icons/extension.svg +1 -0
- package/dist/admin/icons/globe.svg +1 -0
- package/dist/admin/icons/group.svg +1 -0
- package/dist/admin/icons/lock.svg +1 -0
- package/dist/admin/icons/lock_add.svg +1 -0
- package/dist/admin/icons/manage-accounts.svg +1 -0
- package/dist/admin/icons/person.svg +1 -0
- package/dist/admin/icons/person_add.svg +1 -0
- package/dist/admin/icons/preview.svg +1 -0
- package/dist/admin/icons/save.svg +1 -0
- package/dist/admin/icons/segment.svg +1 -0
- package/dist/admin/icons/timer_off.svg +1 -0
- package/dist/admin/icons/web.svg +1 -0
- package/dist/admin/index.page.html +4 -0
- package/dist/admin/init.js +2 -0
- package/dist/admin/init.js.map +1 -0
- package/dist/admin/known-extensions.json +1 -0
- package/dist/admin/nav.fragment.html +20 -0
- package/dist/admin/settings/[owner]/[name]/index.page.html +260 -0
- package/dist/admin/settings/index.page.html +203 -0
- package/dist/kempo/api/admin-globals/DELETE.js +2 -0
- package/dist/kempo/api/admin-globals/DELETE.js.map +1 -0
- package/dist/kempo/api/admin-globals/GET.js +2 -0
- package/dist/kempo/api/admin-globals/GET.js.map +1 -0
- package/dist/kempo/api/admin-globals/POST.js +2 -0
- package/dist/kempo/api/admin-globals/POST.js.map +1 -0
- package/dist/kempo/api/admin-globals/[id]/GET.js +2 -0
- package/dist/kempo/api/admin-globals/[id]/GET.js.map +1 -0
- package/dist/kempo/api/admin-globals/[id]/PUT.js +2 -0
- package/dist/kempo/api/admin-globals/[id]/PUT.js.map +1 -0
- package/dist/kempo/api/admin-globals/[id]/disable/PUT.js +2 -0
- package/dist/kempo/api/admin-globals/[id]/disable/PUT.js.map +1 -0
- package/dist/kempo/api/admin-globals/[id]/enable/PUT.js +2 -0
- package/dist/kempo/api/admin-globals/[id]/enable/PUT.js.map +1 -0
- package/dist/kempo/api/auth/change-password/POST.js +2 -0
- package/dist/kempo/api/auth/change-password/POST.js.map +1 -0
- package/dist/kempo/api/auth/login/email/POST.js +2 -0
- package/dist/kempo/api/auth/login/email/POST.js.map +1 -0
- package/dist/kempo/api/auth/logout/POST.js +2 -0
- package/dist/kempo/api/auth/logout/POST.js.map +1 -0
- package/dist/kempo/api/auth/register/email/POST.js +2 -0
- package/dist/kempo/api/auth/register/email/POST.js.map +1 -0
- package/dist/kempo/api/auth/reset-password/POST.js +2 -0
- package/dist/kempo/api/auth/reset-password/POST.js.map +1 -0
- package/dist/kempo/api/auth/session/GET.js +2 -0
- package/dist/kempo/api/auth/session/GET.js.map +1 -0
- package/dist/kempo/api/auth/verify-email/POST.js +2 -0
- package/dist/kempo/api/auth/verify-email/POST.js.map +1 -0
- package/dist/kempo/api/extensions/DELETE.js +2 -0
- package/dist/kempo/api/extensions/DELETE.js.map +1 -0
- package/dist/kempo/api/extensions/GET.js +2 -0
- package/dist/kempo/api/extensions/GET.js.map +1 -0
- package/dist/kempo/api/extensions/POST.js +2 -0
- package/dist/kempo/api/extensions/POST.js.map +1 -0
- package/dist/kempo/api/extensions/[name]/disable/POST.js +2 -0
- package/dist/kempo/api/extensions/[name]/disable/POST.js.map +1 -0
- package/dist/kempo/api/extensions/[name]/enable/POST.js +2 -0
- package/dist/kempo/api/extensions/[name]/enable/POST.js.map +1 -0
- package/dist/kempo/api/extensions/[name]/update/POST.js +2 -0
- package/dist/kempo/api/extensions/[name]/update/POST.js.map +1 -0
- package/dist/kempo/api/extensions/[name]/update-check/GET.js +2 -0
- package/dist/kempo/api/extensions/[name]/update-check/GET.js.map +1 -0
- package/dist/kempo/api/extensions/available/GET.js +2 -0
- package/dist/kempo/api/extensions/available/GET.js.map +1 -0
- package/dist/kempo/api/extensions/known/GET.js +2 -0
- package/dist/kempo/api/extensions/known/GET.js.map +1 -0
- package/dist/kempo/api/forgot-password/POST.js +2 -0
- package/dist/kempo/api/forgot-password/POST.js.map +1 -0
- package/dist/kempo/api/fragments/DELETE.js +2 -0
- package/dist/kempo/api/fragments/DELETE.js.map +1 -0
- package/dist/kempo/api/fragments/GET.js +2 -0
- package/dist/kempo/api/fragments/GET.js.map +1 -0
- package/dist/kempo/api/fragments/POST.js +2 -0
- package/dist/kempo/api/fragments/POST.js.map +1 -0
- package/dist/kempo/api/fragments/disable/PUT.js +2 -0
- package/dist/kempo/api/fragments/disable/PUT.js.map +1 -0
- package/dist/kempo/api/fragments/enable/PUT.js +2 -0
- package/dist/kempo/api/fragments/enable/PUT.js.map +1 -0
- package/dist/kempo/api/fragments/file/GET.js +2 -0
- package/dist/kempo/api/fragments/file/GET.js.map +1 -0
- package/dist/kempo/api/fragments/file/PATCH.js +2 -0
- package/dist/kempo/api/fragments/file/PATCH.js.map +1 -0
- package/dist/kempo/api/fragments/file/PUT.js +2 -0
- package/dist/kempo/api/fragments/file/PUT.js.map +1 -0
- package/dist/kempo/api/globals/DELETE.js +2 -0
- package/dist/kempo/api/globals/DELETE.js.map +1 -0
- package/dist/kempo/api/globals/GET.js +2 -0
- package/dist/kempo/api/globals/GET.js.map +1 -0
- package/dist/kempo/api/globals/POST.js +2 -0
- package/dist/kempo/api/globals/POST.js.map +1 -0
- package/dist/kempo/api/globals/disable/PUT.js +2 -0
- package/dist/kempo/api/globals/disable/PUT.js.map +1 -0
- package/dist/kempo/api/globals/enable/PUT.js +2 -0
- package/dist/kempo/api/globals/enable/PUT.js.map +1 -0
- package/dist/kempo/api/globals/entry/GET.js +2 -0
- package/dist/kempo/api/globals/entry/GET.js.map +1 -0
- package/dist/kempo/api/globals/entry/PUT.js +2 -0
- package/dist/kempo/api/globals/entry/PUT.js.map +1 -0
- package/dist/kempo/api/groups/DELETE.js +2 -0
- package/dist/kempo/api/groups/DELETE.js.map +1 -0
- package/dist/kempo/api/groups/GET.js +2 -0
- package/dist/kempo/api/groups/GET.js.map +1 -0
- package/dist/kempo/api/groups/PATCH.js +2 -0
- package/dist/kempo/api/groups/PATCH.js.map +1 -0
- package/dist/kempo/api/groups/POST.js +2 -0
- package/dist/kempo/api/groups/POST.js.map +1 -0
- package/dist/kempo/api/groups/[name]/GET.js +2 -0
- package/dist/kempo/api/groups/[name]/GET.js.map +1 -0
- package/dist/kempo/api/groups/[name]/members/DELETE.js +2 -0
- package/dist/kempo/api/groups/[name]/members/DELETE.js.map +1 -0
- package/dist/kempo/api/groups/[name]/members/GET.js +2 -0
- package/dist/kempo/api/groups/[name]/members/GET.js.map +1 -0
- package/dist/kempo/api/groups/[name]/members/POST.js +2 -0
- package/dist/kempo/api/groups/[name]/members/POST.js.map +1 -0
- package/dist/kempo/api/groups/[name]/permissions/DELETE.js +2 -0
- package/dist/kempo/api/groups/[name]/permissions/DELETE.js.map +1 -0
- package/dist/kempo/api/groups/[name]/permissions/GET.js +2 -0
- package/dist/kempo/api/groups/[name]/permissions/GET.js.map +1 -0
- package/dist/kempo/api/groups/[name]/permissions/POST.js +2 -0
- package/dist/kempo/api/groups/[name]/permissions/POST.js.map +1 -0
- package/dist/kempo/api/pages/DELETE.js +2 -0
- package/dist/kempo/api/pages/DELETE.js.map +1 -0
- package/dist/kempo/api/pages/GET.js +2 -0
- package/dist/kempo/api/pages/GET.js.map +1 -0
- package/dist/kempo/api/pages/POST.js +2 -0
- package/dist/kempo/api/pages/POST.js.map +1 -0
- package/dist/kempo/api/pages/directories/GET.js +2 -0
- package/dist/kempo/api/pages/directories/GET.js.map +1 -0
- package/dist/kempo/api/pages/disable/PUT.js +2 -0
- package/dist/kempo/api/pages/disable/PUT.js.map +1 -0
- package/dist/kempo/api/pages/enable/PUT.js +2 -0
- package/dist/kempo/api/pages/enable/PUT.js.map +1 -0
- package/dist/kempo/api/pages/file/GET.js +2 -0
- package/dist/kempo/api/pages/file/GET.js.map +1 -0
- package/dist/kempo/api/pages/file/PATCH.js +2 -0
- package/dist/kempo/api/pages/file/PATCH.js.map +1 -0
- package/dist/kempo/api/pages/file/PUT.js +2 -0
- package/dist/kempo/api/pages/file/PUT.js.map +1 -0
- package/dist/kempo/api/pages/templates/GET.js +2 -0
- package/dist/kempo/api/pages/templates/GET.js.map +1 -0
- package/dist/kempo/api/permissions/DELETE.js +2 -0
- package/dist/kempo/api/permissions/DELETE.js.map +1 -0
- package/dist/kempo/api/permissions/GET.js +2 -0
- package/dist/kempo/api/permissions/GET.js.map +1 -0
- package/dist/kempo/api/permissions/PATCH.js +2 -0
- package/dist/kempo/api/permissions/PATCH.js.map +1 -0
- package/dist/kempo/api/permissions/POST.js +2 -0
- package/dist/kempo/api/permissions/POST.js.map +1 -0
- package/dist/kempo/api/settings/[owner]/GET.js +2 -0
- package/dist/kempo/api/settings/[owner]/GET.js.map +1 -0
- package/dist/kempo/api/settings/[owner]/[name]/DELETE.js +2 -0
- package/dist/kempo/api/settings/[owner]/[name]/DELETE.js.map +1 -0
- package/dist/kempo/api/settings/[owner]/[name]/GET.js +2 -0
- package/dist/kempo/api/settings/[owner]/[name]/GET.js.map +1 -0
- package/dist/kempo/api/settings/[owner]/[name]/POST.js +2 -0
- package/dist/kempo/api/settings/[owner]/[name]/POST.js.map +1 -0
- package/dist/kempo/api/settings/public/GET.js +2 -0
- package/dist/kempo/api/settings/public/GET.js.map +1 -0
- package/dist/kempo/api/templates/DELETE.js +2 -0
- package/dist/kempo/api/templates/DELETE.js.map +1 -0
- package/dist/kempo/api/templates/GET.js +2 -0
- package/dist/kempo/api/templates/GET.js.map +1 -0
- package/dist/kempo/api/templates/POST.js +2 -0
- package/dist/kempo/api/templates/POST.js.map +1 -0
- package/dist/kempo/api/templates/disable/PUT.js +2 -0
- package/dist/kempo/api/templates/disable/PUT.js.map +1 -0
- package/dist/kempo/api/templates/enable/PUT.js +2 -0
- package/dist/kempo/api/templates/enable/PUT.js.map +1 -0
- package/dist/kempo/api/templates/file/GET.js +2 -0
- package/dist/kempo/api/templates/file/GET.js.map +1 -0
- package/dist/kempo/api/templates/file/PATCH.js +2 -0
- package/dist/kempo/api/templates/file/PATCH.js.map +1 -0
- package/dist/kempo/api/templates/file/PUT.js +2 -0
- package/dist/kempo/api/templates/file/PUT.js.map +1 -0
- package/dist/kempo/api/user/DELETE.js +2 -0
- package/dist/kempo/api/user/DELETE.js.map +1 -0
- package/dist/kempo/api/user/GET.js +2 -0
- package/dist/kempo/api/user/GET.js.map +1 -0
- package/dist/kempo/api/user/PATCH.js +2 -0
- package/dist/kempo/api/user/PATCH.js.map +1 -0
- package/dist/kempo/api/user/[userid]/GET.js +2 -0
- package/dist/kempo/api/user/[userid]/GET.js.map +1 -0
- package/dist/kempo/api/user/[userid]/groups/DELETE.js +2 -0
- package/dist/kempo/api/user/[userid]/groups/DELETE.js.map +1 -0
- package/dist/kempo/api/user/[userid]/groups/GET.js +2 -0
- package/dist/kempo/api/user/[userid]/groups/GET.js.map +1 -0
- package/dist/kempo/api/user/[userid]/groups/POST.js +2 -0
- package/dist/kempo/api/user/[userid]/groups/POST.js.map +1 -0
- package/dist/kempo/api/user/[userid]/permissions/GET.js +2 -0
- package/dist/kempo/api/user/[userid]/permissions/GET.js.map +1 -0
- package/dist/kempo/api/user/[userid]/permissions/all/GET.js +2 -0
- package/dist/kempo/api/user/[userid]/permissions/all/GET.js.map +1 -0
- package/dist/kempo/api/user/[userid]/permissions/list/GET.js +2 -0
- package/dist/kempo/api/user/[userid]/permissions/list/GET.js.map +1 -0
- package/dist/kempo/api/user/[userid]/permissions/some/GET.js +2 -0
- package/dist/kempo/api/user/[userid]/permissions/some/GET.js.map +1 -0
- package/dist/kempo/api/user/[userid]/sessions/DELETE.js +2 -0
- package/dist/kempo/api/user/[userid]/sessions/DELETE.js.map +1 -0
- package/dist/kempo/api/user/[userid]/sessions/GET.js +2 -0
- package/dist/kempo/api/user/[userid]/sessions/GET.js.map +1 -0
- package/dist/kempo/api/user/[userid]/sessions/expired/DELETE.js +2 -0
- package/dist/kempo/api/user/[userid]/sessions/expired/DELETE.js.map +1 -0
- package/dist/kempo/api/user/create/POST.js +2 -0
- package/dist/kempo/api/user/create/POST.js.map +1 -0
- package/dist/kempo/api/user/search/GET.js +2 -0
- package/dist/kempo/api/user/search/GET.js.map +1 -0
- package/dist/kempo/components/LogoutBtn.js +2 -0
- package/dist/kempo/components/LogoutBtn.js.map +1 -0
- package/dist/kempo/components/Menu.js +17 -0
- package/dist/kempo/components/Menu.js.map +1 -0
- package/dist/kempo/components/Permission.js +2 -0
- package/dist/kempo/components/Permission.js.map +1 -0
- package/dist/kempo/components/Role.js +2 -0
- package/dist/kempo/components/Role.js.map +1 -0
- package/dist/kempo/components/UserCreatedAt.js +2 -0
- package/dist/kempo/components/UserCreatedAt.js.map +1 -0
- package/dist/kempo/components/UserEmail.js +2 -0
- package/dist/kempo/components/UserEmail.js.map +1 -0
- package/dist/kempo/components/UserEmailVerified.js +2 -0
- package/dist/kempo/components/UserEmailVerified.js.map +1 -0
- package/dist/kempo/components/UserName.js +2 -0
- package/dist/kempo/components/UserName.js.map +1 -0
- package/dist/kempo/fetch.js +2 -0
- package/dist/kempo/fetch.js.map +1 -0
- package/dist/kempo/icons/format_indent_decrease.svg +1 -0
- package/dist/kempo/icons/format_indent_increase.svg +1 -0
- package/dist/kempo/icons/format_quote.svg +1 -0
- package/dist/kempo/icons/redo.svg +1 -0
- package/dist/kempo/icons/restart_alt.svg +1 -0
- package/dist/kempo/icons/subscript.svg +1 -0
- package/dist/kempo/icons/superscript.svg +1 -0
- package/dist/kempo/icons/undo.svg +1 -0
- package/dist/kempo/sdk.js +2 -0
- package/dist/kempo/sdk.js.map +1 -0
- package/middleware/extension-scope-router.js +255 -0
- package/middleware/kempo-auth.js +26 -0
- package/package.json +46 -19
- package/scripts/init-db.js +211 -0
- package/server/db/index.js +24 -0
- package/server/db/migrations/0000_initial.sql +91 -0
- package/server/db/migrations/0001_soft_master_chief.sql +1 -0
- package/server/db/migrations/meta/0000_snapshot.json +588 -0
- package/server/db/migrations/meta/0001_snapshot.json +594 -0
- package/server/db/migrations/meta/_journal.json +20 -0
- package/server/db/schema.js +173 -0
- package/server/sdk.js +192 -0
- package/server/utils/admin-global-content/createAdminGlobalContent.js +43 -0
- package/server/utils/admin-global-content/deleteAdminGlobalContent.js +34 -0
- package/server/utils/admin-global-content/deleteAdminGlobalContentByOwner.js +26 -0
- package/server/utils/admin-global-content/disableAdminGlobalContent.js +33 -0
- package/server/utils/admin-global-content/enableAdminGlobalContent.js +33 -0
- package/server/utils/admin-global-content/getAdminGlobalContent.js +28 -0
- package/server/utils/admin-global-content/helpers.js +47 -0
- package/server/utils/admin-global-content/listAdminGlobalContent.js +20 -0
- package/server/utils/admin-global-content/updateAdminGlobalContent.js +41 -0
- package/server/utils/auth/changePassword.js +27 -0
- package/server/utils/auth/getSession.js +35 -0
- package/server/utils/auth/loginEmail.js +66 -0
- package/server/utils/auth/logout.js +16 -0
- package/server/utils/auth/registerEmail.js +105 -0
- package/server/utils/auth/requestPasswordReset.js +62 -0
- package/server/utils/auth/resetPassword.js +58 -0
- package/server/utils/auth/sendVerificationEmail.js +57 -0
- package/server/utils/auth/verifyEmail.js +46 -0
- package/server/utils/email/sendEmail.js +42 -0
- package/server/utils/email/sendEmailFromTemplate.js +45 -0
- package/server/utils/extensions/checkExtensionUpdate.js +56 -0
- package/server/utils/extensions/createTablesFromSchema.js +57 -0
- package/server/utils/extensions/disableExtension.js +26 -0
- package/server/utils/extensions/enableExtension.js +26 -0
- package/server/utils/extensions/getExtension.js +34 -0
- package/server/utils/extensions/installExtension.js +134 -0
- package/server/utils/extensions/listExtensions.js +36 -0
- package/server/utils/extensions/scopeCache.js +18 -0
- package/server/utils/extensions/uninstallExtension.js +88 -0
- package/server/utils/extensions/updateExtension.js +159 -0
- package/server/utils/fragments/createFragment.js +57 -0
- package/server/utils/fragments/deleteFragment.js +35 -0
- package/server/utils/fragments/disableFragment.js +37 -0
- package/server/utils/fragments/enableFragment.js +30 -0
- package/server/utils/fragments/getFragment.js +36 -0
- package/server/utils/fragments/listFragments.js +32 -0
- package/server/utils/fragments/moveFragment.js +54 -0
- package/server/utils/fragments/updateFragment.js +58 -0
- package/server/utils/fs/parseFrontmatter.js +13 -0
- package/server/utils/fs/scanDir.js +26 -0
- package/server/utils/global-content/createGlobalContent.js +58 -0
- package/server/utils/global-content/deleteGlobalContent.js +52 -0
- package/server/utils/global-content/disableGlobalContent.js +57 -0
- package/server/utils/global-content/enableGlobalContent.js +53 -0
- package/server/utils/global-content/getGlobalContent.js +28 -0
- package/server/utils/global-content/helpers.js +33 -0
- package/server/utils/global-content/listGlobalContent.js +24 -0
- package/server/utils/global-content/updateGlobalContent.js +56 -0
- package/server/utils/groups/addUserToGroup.js +46 -0
- package/server/utils/groups/createGroup.js +32 -0
- package/server/utils/groups/deleteGroup.js +29 -0
- package/server/utils/groups/getGroup.js +25 -0
- package/server/utils/groups/getGroupMembers.js +33 -0
- package/server/utils/groups/listGroups.js +21 -0
- package/server/utils/groups/removeUserFromGroup.js +31 -0
- package/server/utils/groups/updateGroup.js +54 -0
- package/server/utils/hooks/createHook.js +29 -0
- package/server/utils/hooks/deleteHook.js +19 -0
- package/server/utils/hooks/getHook.js +19 -0
- package/server/utils/hooks/listHooks.js +30 -0
- package/server/utils/hooks/triggerHook.js +61 -0
- package/server/utils/hooks/updateHook.js +27 -0
- package/server/utils/pages/createPage.js +60 -0
- package/server/utils/pages/deletePage.js +35 -0
- package/server/utils/pages/disablePage.js +37 -0
- package/server/utils/pages/enablePage.js +30 -0
- package/server/utils/pages/getPage.js +53 -0
- package/server/utils/pages/listDirectories.js +18 -0
- package/server/utils/pages/listPages.js +40 -0
- package/server/utils/pages/listTemplates.js +52 -0
- package/server/utils/pages/movePage.js +54 -0
- package/server/utils/pages/updatePage.js +74 -0
- package/server/utils/permissions/addPermissionToGroup.js +43 -0
- package/server/utils/permissions/createPermission.js +43 -0
- package/server/utils/permissions/currentUserHasAllPermissions.js +24 -0
- package/server/utils/permissions/currentUserHasPermission.js +24 -0
- package/server/utils/permissions/currentUserHasSomePermissions.js +24 -0
- package/server/utils/permissions/deletePermission.js +29 -0
- package/server/utils/permissions/getAllPermissions.js +21 -0
- package/server/utils/permissions/getPermissionsForGroups.js +26 -0
- package/server/utils/permissions/getUserGroups.js +31 -0
- package/server/utils/permissions/getUserPermission.js +30 -0
- package/server/utils/permissions/getUserPermissions.js +16 -0
- package/server/utils/permissions/removePermissionFromGroup.js +31 -0
- package/server/utils/permissions/updatePermission.js +33 -0
- package/server/utils/permissions/userHasAllPermissions.js +31 -0
- package/server/utils/permissions/userHasPermission.js +13 -0
- package/server/utils/permissions/userHasSomePermissions.js +31 -0
- package/server/utils/sessions/createSession.js +36 -0
- package/server/utils/sessions/deleteExpiredUserSessions.js +22 -0
- package/server/utils/sessions/deleteSession.js +16 -0
- package/server/utils/sessions/deleteUserSessions.js +16 -0
- package/server/utils/sessions/getSessionById.js +21 -0
- package/server/utils/sessions/getSessionByToken.js +21 -0
- package/server/utils/sessions/getSessions.js +19 -0
- package/server/utils/sessions/getUserSessions.js +30 -0
- package/server/utils/settings/deleteSetting.js +24 -0
- package/server/utils/settings/getPublicSettings.js +22 -0
- package/server/utils/settings/getSetting.js +25 -0
- package/server/utils/settings/getSettingWithMetadata.js +33 -0
- package/server/utils/settings/getSettingsByOwner.js +23 -0
- package/server/utils/settings/helpers.js +29 -0
- package/server/utils/settings/listSettings.js +25 -0
- package/server/utils/settings/setSetting.js +49 -0
- package/server/utils/templates/createTemplate.js +71 -0
- package/server/utils/templates/deleteTemplate.js +35 -0
- package/server/utils/templates/disableTemplate.js +37 -0
- package/server/utils/templates/enableTemplate.js +30 -0
- package/server/utils/templates/getTemplate.js +30 -0
- package/server/utils/templates/moveTemplate.js +54 -0
- package/server/utils/templates/updateTemplate.js +46 -0
- package/server/utils/users/createUser.js +60 -0
- package/server/utils/users/deleteUser.js +19 -0
- package/server/utils/users/findUsersByEmail.js +35 -0
- package/server/utils/users/findUsersByName.js +35 -0
- package/server/utils/users/getUserByEmail.js +26 -0
- package/server/utils/users/getUserById.js +27 -0
- package/server/utils/users/getUsers.js +26 -0
- package/server/utils/users/searchUsers.js +53 -0
- package/server/utils/users/updateUser.js +38 -0
- package/.gitattributes +0 -2
- package/LICENSE +0 -21
- package/dist/components/Accordion.js +0 -1
- package/dist/components/Card.js +0 -1
- package/dist/components/Collapsible.js +0 -1
- package/dist/components/Component.js +0 -1
- package/dist/components/ContentSlider.js +0 -1
- package/dist/components/Dialog.js +0 -1
- package/dist/components/DirectoryViewer.js +0 -1
- package/dist/components/FocusCapture.js +0 -1
- package/dist/components/Icon.js +0 -1
- package/dist/components/Import.js +0 -1
- package/dist/components/LazyComponent.js +0 -1
- package/dist/components/PersistantCollapsible.js +0 -1
- package/dist/components/PhotoViewer.js +0 -1
- package/dist/components/ReactiveComponent.js +0 -1
- package/dist/components/ReactiveLazyComponent.js +0 -1
- package/dist/components/Resize.js +0 -1
- package/dist/components/Search.js +0 -1
- package/dist/components/ShowMore.js +0 -1
- package/dist/components/SideMenu.js +0 -1
- package/dist/components/Sortable.js +0 -1
- package/dist/components/Split.js +0 -1
- package/dist/components/Stacks.js +0 -1
- package/dist/components/Table.js +0 -1
- package/dist/components/Tabs.js +0 -1
- package/dist/components/Tags.js +0 -1
- package/dist/components/ThemeSwitcher.js +0 -1
- package/dist/components/Timestamp.js +0 -1
- package/dist/components/Toast.js +0 -1
- package/dist/components/Toggle.js +0 -1
- package/dist/components/tableControls/DeleteRecord.js +0 -1
- package/dist/components/tableControls/DeleteSelected.js +0 -1
- package/dist/components/tableControls/Edit.js +0 -1
- package/dist/components/tableControls/ExportCSV.js +0 -1
- package/dist/components/tableControls/ExportJson.js +0 -1
- package/dist/components/tableControls/FieldSortHide.js +0 -1
- package/dist/components/tableControls/Filters.js +0 -1
- package/dist/components/tableControls/FirstPage.js +0 -1
- package/dist/components/tableControls/HiddenCount.js +0 -1
- package/dist/components/tableControls/Hide.js +0 -1
- package/dist/components/tableControls/LastPage.js +0 -1
- package/dist/components/tableControls/NextPage.js +0 -1
- package/dist/components/tableControls/PageSelect.js +0 -1
- package/dist/components/tableControls/PageSize.js +0 -1
- package/dist/components/tableControls/PrevPage.js +0 -1
- package/dist/components/tableControls/Search.js +0 -1
- package/dist/components/tableControls/SelectCount.js +0 -1
- package/dist/components/tableControls/ShowAll.js +0 -1
- package/dist/components/tableControls/ShowHideFields.js +0 -1
- package/dist/components/tableControls/TableControl.js +0 -1
- package/dist/kempo-hljs.css +0 -1
- package/dist/kempo-styles.css +0 -1
- package/dist/kempo-vars.css +0 -1
- package/dist/utils/Server.js +0 -1
- package/dist/utils/cli.js +0 -1
- package/dist/utils/cookie.js +0 -1
- package/dist/utils/debounce.js +0 -1
- package/dist/utils/drag.js +0 -1
- package/dist/utils/element.js +0 -1
- package/dist/utils/files.js +0 -1
- package/dist/utils/formatTimestamp.js +0 -1
- package/dist/utils/fs-utils.js +0 -1
- package/dist/utils/fuzzyMatch.js +0 -1
- package/dist/utils/getPreferredTheme.js +0 -1
- package/dist/utils/loadCss.js +0 -1
- package/dist/utils/loadScript.js +0 -1
- package/dist/utils/minify.js +0 -1
- package/dist/utils/object.js +0 -1
- package/dist/utils/raf.js +0 -1
- package/dist/utils/string.js +0 -1
- package/dist/utils/toFunction.js +0 -1
- package/dist/utils/type.js +0 -1
- package/dist/utils/waitFrames.js +0 -1
- package/dist/utils/watchDirectoryHandle.js +0 -1
- package/dist/utils/watchWindowSize.js +0 -1
- package/docs/components/_template.html +0 -77
- package/docs/components/accordion.html +0 -124
- package/docs/components/card.html +0 -93
- package/docs/components/component.html +0 -92
- package/docs/components/content-slider.html +0 -195
- package/docs/components/dialog.html +0 -247
- package/docs/components/directory-viewer.html +0 -92
- package/docs/components/focus-capture.html +0 -70
- package/docs/components/icon.html +0 -160
- package/docs/components/import.html +0 -79
- package/docs/components/lazy-component.html +0 -86
- package/docs/components/reactive-component.html +0 -71
- package/docs/components/reactive-lazy-component.html +0 -71
- package/docs/components/resize.html +0 -154
- package/docs/components/search.html +0 -104
- package/docs/components/show-more.html +0 -125
- package/docs/components/side-menu.html +0 -148
- package/docs/components/sortable.html +0 -98
- package/docs/components/split.html +0 -128
- package/docs/components/table.html +0 -314
- package/docs/components/tableControls.html +0 -79
- package/docs/components/tableCustomFields.html +0 -115
- package/docs/components/tableFetchRecords.html +0 -116
- package/docs/components/tableFieldSortHide.html +0 -77
- package/docs/components/tablePagination.html +0 -102
- package/docs/components/tableRecordEditing.html +0 -146
- package/docs/components/tableRecordFiltering.html +0 -77
- package/docs/components/tableRecordHiding.html +0 -82
- package/docs/components/tableRecordSearching.html +0 -77
- package/docs/components/tableRecordSelection.html +0 -77
- package/docs/components/tableRowControls.html +0 -80
- package/docs/components/tableSorting.html +0 -75
- package/docs/components/tabs.html +0 -165
- package/docs/components/tags.html +0 -96
- package/docs/components/theme-switcher.html +0 -76
- package/docs/components/timestamp.html +0 -88
- package/docs/components/toast.html +0 -330
- package/docs/components/toggle.html +0 -157
- package/docs/icons/add.svg +0 -1
- package/docs/icons/arrow-back.svg +0 -1
- package/docs/icons/arrow-down-double.svg +0 -1
- package/docs/icons/arrow-down.svg +0 -1
- package/docs/icons/arrow-forward.svg +0 -1
- package/docs/icons/arrow-up-double.svg +0 -1
- package/docs/icons/arrow-up.svg +0 -1
- package/docs/icons/cards.svg +0 -1
- package/docs/icons/check.svg +0 -1
- package/docs/icons/chevron-left.svg +0 -1
- package/docs/icons/chevron-right.svg +0 -1
- package/docs/icons/close.svg +0 -2
- package/docs/icons/compare.svg +0 -1
- package/docs/icons/delete.svg +0 -1
- package/docs/icons/drag-handle.svg +0 -1
- package/docs/icons/drawing2.svg +0 -124
- package/docs/icons/edit.svg +0 -1
- package/docs/icons/error.svg +0 -1
- package/docs/icons/export-file.svg +0 -1
- package/docs/icons/file-text.svg +0 -1
- package/docs/icons/file.svg +0 -1
- package/docs/icons/filter-off.svg +0 -1
- package/docs/icons/filter.svg +0 -1
- package/docs/icons/first.svg +0 -1
- package/docs/icons/folder-clear.svg +0 -1
- package/docs/icons/folder-create.svg +0 -1
- package/docs/icons/folder-open.svg +0 -1
- package/docs/icons/folder.svg +0 -1
- package/docs/icons/hide.svg +0 -1
- package/docs/icons/image.svg +0 -1
- package/docs/icons/label-add.svg +0 -1
- package/docs/icons/label.svg +0 -1
- package/docs/icons/last.svg +0 -1
- package/docs/icons/menu.svg +0 -1
- package/docs/icons/mode-auto.svg +0 -1
- package/docs/icons/mode-dark.svg +0 -1
- package/docs/icons/mode-light.svg +0 -1
- package/docs/icons/open-in-browser.svg +0 -1
- package/docs/icons/pause.svg +0 -1
- package/docs/icons/play.svg +0 -1
- package/docs/icons/refresh.svg +0 -1
- package/docs/icons/remove.svg +0 -1
- package/docs/icons/save.svg +0 -1
- package/docs/icons/search.svg +0 -1
- package/docs/icons/settings.svg +0 -1
- package/docs/icons/storage.svg +0 -1
- package/docs/icons/table-visibility.svg +0 -1
- package/docs/icons/tag.svg +0 -1
- package/docs/icons/tools.svg +0 -1
- package/docs/icons/trash-x.svg +0 -1
- package/docs/icons/warning.svg +0 -1
- package/docs/index.html +0 -21
- package/docs/js/nav.inc.js +0 -4
- package/docs/kempo/components/Accordion.js +0 -1
- package/docs/kempo/components/Card.js +0 -1
- package/docs/kempo/components/Collapsible.js +0 -1
- package/docs/kempo/components/Component.js +0 -1
- package/docs/kempo/components/ContentSlider.js +0 -1
- package/docs/kempo/components/Dialog.js +0 -1
- package/docs/kempo/components/DirectoryViewer.js +0 -1
- package/docs/kempo/components/FocusCapture.js +0 -1
- package/docs/kempo/components/Icon.js +0 -1
- package/docs/kempo/components/Import.js +0 -1
- package/docs/kempo/components/LazyComponent.js +0 -1
- package/docs/kempo/components/PersistantCollapsible.js +0 -1
- package/docs/kempo/components/PhotoViewer.js +0 -1
- package/docs/kempo/components/ReactiveComponent.js +0 -1
- package/docs/kempo/components/ReactiveLazyComponent.js +0 -1
- package/docs/kempo/components/Resize.js +0 -1
- package/docs/kempo/components/Search.js +0 -1
- package/docs/kempo/components/ShowMore.js +0 -1
- package/docs/kempo/components/SideMenu.js +0 -1
- package/docs/kempo/components/Sortable.js +0 -1
- package/docs/kempo/components/Split.js +0 -1
- package/docs/kempo/components/Stacks.js +0 -1
- package/docs/kempo/components/Table.js +0 -1
- package/docs/kempo/components/Tabs.js +0 -1
- package/docs/kempo/components/Tags.js +0 -1
- package/docs/kempo/components/ThemeSwitcher.js +0 -1
- package/docs/kempo/components/Timestamp.js +0 -1
- package/docs/kempo/components/Toast.js +0 -1
- package/docs/kempo/components/Toggle.js +0 -1
- package/docs/kempo/components/tableControls/DeleteRecord.js +0 -1
- package/docs/kempo/components/tableControls/DeleteSelected.js +0 -1
- package/docs/kempo/components/tableControls/Edit.js +0 -1
- package/docs/kempo/components/tableControls/ExportCSV.js +0 -1
- package/docs/kempo/components/tableControls/ExportJson.js +0 -1
- package/docs/kempo/components/tableControls/FieldSortHide.js +0 -1
- package/docs/kempo/components/tableControls/Filters.js +0 -1
- package/docs/kempo/components/tableControls/FirstPage.js +0 -1
- package/docs/kempo/components/tableControls/HiddenCount.js +0 -1
- package/docs/kempo/components/tableControls/Hide.js +0 -1
- package/docs/kempo/components/tableControls/LastPage.js +0 -1
- package/docs/kempo/components/tableControls/NextPage.js +0 -1
- package/docs/kempo/components/tableControls/PageSelect.js +0 -1
- package/docs/kempo/components/tableControls/PageSize.js +0 -1
- package/docs/kempo/components/tableControls/PrevPage.js +0 -1
- package/docs/kempo/components/tableControls/Search.js +0 -1
- package/docs/kempo/components/tableControls/SelectCount.js +0 -1
- package/docs/kempo/components/tableControls/ShowAll.js +0 -1
- package/docs/kempo/components/tableControls/ShowHideFields.js +0 -1
- package/docs/kempo/components/tableControls/TableControl.js +0 -1
- package/docs/kempo/index.js +0 -1
- package/docs/kempo/kempo-hljs.css +0 -1
- package/docs/kempo/kempo-styles.css +0 -1
- package/docs/kempo/kempo-vars.css +0 -1
- package/docs/kempo/utils/Server.js +0 -1
- package/docs/kempo/utils/cli.js +0 -1
- package/docs/kempo/utils/cookie.js +0 -1
- package/docs/kempo/utils/debounce.js +0 -1
- package/docs/kempo/utils/drag.js +0 -1
- package/docs/kempo/utils/element.js +0 -1
- package/docs/kempo/utils/files.js +0 -1
- package/docs/kempo/utils/formatTimestamp.js +0 -1
- package/docs/kempo/utils/fs-utils.js +0 -1
- package/docs/kempo/utils/fuzzyMatch.js +0 -1
- package/docs/kempo/utils/getPreferredTheme.js +0 -1
- package/docs/kempo/utils/loadCss.js +0 -1
- package/docs/kempo/utils/loadScript.js +0 -1
- package/docs/kempo/utils/minify.js +0 -1
- package/docs/kempo/utils/object.js +0 -1
- package/docs/kempo/utils/raf.js +0 -1
- package/docs/kempo/utils/string.js +0 -1
- package/docs/kempo/utils/toFunction.js +0 -1
- package/docs/kempo/utils/type.js +0 -1
- package/docs/kempo/utils/waitFrames.js +0 -1
- package/docs/kempo/utils/watchDirectoryHandle.js +0 -1
- package/docs/kempo/utils/watchWindowSize.js +0 -1
- package/docs/nav.inc.html +0 -74
- package/docs/search.json +0 -400
- package/docs/styles/_template.html +0 -26
- package/docs/styles/borders-spacing.html +0 -197
- package/docs/styles/buttons.html +0 -117
- package/docs/styles/colors.html +0 -69
- package/docs/styles/displays-layouts.html +0 -162
- package/docs/styles/embed-1.html +0 -40
- package/docs/styles/inputs.html +0 -93
- package/docs/styles/tables.html +0 -147
- package/docs/styles/typography.html +0 -120
- package/docs/utils/Server.html +0 -119
- package/docs/utils/_template.html +0 -77
- package/docs/utils/cli.html +0 -86
- package/docs/utils/cookie.html +0 -89
- package/docs/utils/debounce.html +0 -63
- package/docs/utils/drag.html +0 -87
- package/docs/utils/element.html +0 -126
- package/docs/utils/format-timestamp.html +0 -66
- package/docs/utils/fuzzy-match.html +0 -60
- package/icons/add.svg +0 -1
- package/icons/arrow-back.svg +0 -1
- package/icons/arrow-down-double.svg +0 -1
- package/icons/arrow-down.svg +0 -1
- package/icons/arrow-forward.svg +0 -1
- package/icons/arrow-up-double.svg +0 -1
- package/icons/arrow-up.svg +0 -1
- package/icons/cards.svg +0 -1
- package/icons/check.svg +0 -1
- package/icons/chevron-left.svg +0 -1
- package/icons/chevron-right.svg +0 -1
- package/icons/close.svg +0 -2
- package/icons/compare.svg +0 -1
- package/icons/delete.svg +0 -1
- package/icons/drag-handle.svg +0 -1
- package/icons/drawing2.svg +0 -124
- package/icons/edit.svg +0 -1
- package/icons/error.svg +0 -1
- package/icons/export-file.svg +0 -1
- package/icons/file-text.svg +0 -1
- package/icons/file.svg +0 -1
- package/icons/filter-off.svg +0 -1
- package/icons/filter.svg +0 -1
- package/icons/first.svg +0 -1
- package/icons/folder-clear.svg +0 -1
- package/icons/folder-create.svg +0 -1
- package/icons/folder-open.svg +0 -1
- package/icons/folder.svg +0 -1
- package/icons/hide.svg +0 -1
- package/icons/image.svg +0 -1
- package/icons/label-add.svg +0 -1
- package/icons/label.svg +0 -1
- package/icons/last.svg +0 -1
- package/icons/menu.svg +0 -1
- package/icons/mode-auto.svg +0 -1
- package/icons/mode-dark.svg +0 -1
- package/icons/mode-light.svg +0 -1
- package/icons/open-in-browser.svg +0 -1
- package/icons/pause.svg +0 -1
- package/icons/play.svg +0 -1
- package/icons/refresh.svg +0 -1
- package/icons/remove.svg +0 -1
- package/icons/save.svg +0 -1
- package/icons/search.svg +0 -1
- package/icons/settings.svg +0 -1
- package/icons/show.svg +0 -1
- package/icons/storage.svg +0 -1
- package/icons/table-visibility.svg +0 -1
- package/icons/tag.svg +0 -1
- package/icons/tools.svg +0 -1
- package/icons/trash-x.svg +0 -1
- package/icons/warning.svg +0 -1
- package/scripts/build.js +0 -154
- package/scripts/docs.js +0 -47
- package/src/components/Accordion.js +0 -182
- package/src/components/Card.js +0 -62
- package/src/components/Collapsible.js +0 -104
- package/src/components/Component.js +0 -110
- package/src/components/ContentSlider.js +0 -192
- package/src/components/Dialog.js +0 -338
- package/src/components/DirectoryViewer.js +0 -363
- package/src/components/FocusCapture.js +0 -31
- package/src/components/Icon.js +0 -119
- package/src/components/Import.js +0 -48
- package/src/components/LazyComponent.js +0 -65
- package/src/components/PersistantCollapsible.js +0 -44
- package/src/components/PhotoViewer.js +0 -358
- package/src/components/ReactiveComponent.js +0 -11
- package/src/components/ReactiveLazyComponent.js +0 -11
- package/src/components/Resize.js +0 -168
- package/src/components/Search.js +0 -140
- package/src/components/ShowMore.js +0 -102
- package/src/components/SideMenu.js +0 -150
- package/src/components/Sortable.js +0 -169
- package/src/components/Split.js +0 -164
- package/src/components/Table.js +0 -935
- package/src/components/Tabs.js +0 -349
- package/src/components/Tags.js +0 -224
- package/src/components/ThemeSwitcher.js +0 -100
- package/src/components/Timestamp.js +0 -28
- package/src/components/Toast.js +0 -424
- package/src/components/Toggle.js +0 -137
- package/src/components/tableControls/DeleteRecord.js +0 -43
- package/src/components/tableControls/DeleteSelected.js +0 -70
- package/src/components/tableControls/Edit.js +0 -84
- package/src/components/tableControls/ExportCSV.js +0 -91
- package/src/components/tableControls/ExportJson.js +0 -62
- package/src/components/tableControls/FieldSortHide.js +0 -77
- package/src/components/tableControls/Filters.js +0 -129
- package/src/components/tableControls/FirstPage.js +0 -69
- package/src/components/tableControls/HiddenCount.js +0 -37
- package/src/components/tableControls/Hide.js +0 -40
- package/src/components/tableControls/LastPage.js +0 -67
- package/src/components/tableControls/NextPage.js +0 -69
- package/src/components/tableControls/PageSelect.js +0 -89
- package/src/components/tableControls/PageSize.js +0 -70
- package/src/components/tableControls/PrevPage.js +0 -69
- package/src/components/tableControls/Search.js +0 -49
- package/src/components/tableControls/SelectCount.js +0 -42
- package/src/components/tableControls/ShowAll.js +0 -37
- package/src/components/tableControls/TableControl.js +0 -51
- package/src/kempo-hljs.css +0 -146
- package/src/kempo-styles.css +0 -952
- package/src/kempo-vars.css +0 -159
- package/src/utils/Server.js +0 -189
- package/src/utils/cli.js +0 -119
- package/src/utils/cookie.js +0 -20
- package/src/utils/debounce.js +0 -9
- package/src/utils/drag.js +0 -74
- package/src/utils/element.js +0 -81
- package/src/utils/formatTimestamp.js +0 -27
- package/src/utils/fs-utils.js +0 -41
- package/src/utils/fuzzyMatch.js +0 -60
- package/src/utils/getPreferredTheme.js +0 -1
- package/src/utils/loadCss.js +0 -10
- package/src/utils/loadScript.js +0 -10
- package/src/utils/object.js +0 -198
- package/src/utils/raf.js +0 -10
- package/src/utils/string.js +0 -66
- package/src/utils/toFunction.js +0 -24
- package/src/utils/type.js +0 -13
- package/src/utils/waitFrames.js +0 -17
- package/src/utils/watchDirectoryHandle.js +0 -18
- package/src/utils/watchWindowSize.js +0 -15
- package/test/components/SuiteList.js +0 -26
- package/test/components/Test.js +0 -357
- package/test/index.html +0 -49
- package/test/index.js +0 -36
- package/test/suite.html +0 -45
- package/test/suites.inc.html +0 -4
- package/test/tests/components/Component.test.js +0 -138
- package/test/tests/utils/cli.test.js +0 -113
- package/test/tests/utils/cookie.test.js +0 -87
- package/test/tests/utils/debounce.test.js +0 -71
- /package/{docs/icons/show.svg → dist/admin/icons/visibility.svg} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import createGroup from"../../../../server/utils/groups/createGroup.js";export default async(r,s)=>{const e=r.cookies.session_token,{name:o,description:t}=r.body;if(!o||!o.trim())return s.status(400).json({error:"Group name is required"});if(o.includes(":"))return s.status(400).json({error:'Group name cannot contain ":"'});const[n,i]=await currentUserHasPermission(e,"system:group:create");if(n)return s.status(n.code).json({error:n.msg});if(!i)return s.status(403).json({error:"Insufficient permissions"});const[u,a]=await createGroup({name:`custom:${o}`,description:t,owner:"custom"});if(u)return s.status(u.code).json({error:u.msg});s.json(a)};
|
|
2
|
+
//# sourceMappingURL=POST.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/groups/POST.js","names":["currentUserHasPermission","createGroup","async","request","response","token","cookies","session_token","name","description","body","trim","status","json","error","includes","permError","hasPermission","code","msg","result","owner"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport createGroup from '../../../../server/utils/groups/createGroup.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst { name, description } = request.body;\n\n\tif(!name || !name.trim()){\n\t\treturn response.status(400).json({ error: 'Group name is required' });\n\t}\n\n\tif(name.includes(':')){\n\t\treturn response.status(400).json({ error: 'Group name cannot contain \":\"' });\n\t}\n\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:create');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst [error, result] = await createGroup({ name: `custom:${name}`, description, owner: 'custom' });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(result);\n};\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,gBAAiB,gEAETC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,KAAEA,EAAIC,YAAEA,GAAgBN,EAAQO,KAEtC,IAAIF,IAASA,EAAKG,OACjB,OAAOP,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,2BAG3C,GAAGN,EAAKO,SAAS,KAChB,OAAOX,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,kCAG3C,MAAOE,EAAWC,SAAuBjB,yBAAyBK,EAAO,uBAEzE,GAAGW,EACF,OAAOZ,EAASQ,OAAOI,EAAUE,MAAML,KAAK,CAAEC,MAAOE,EAAUG,MAGhE,IAAIF,EACH,OAAOb,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,6BAG3C,MAAOA,EAAOM,SAAgBnB,YAAY,CAAEO,KAAM,UAAUA,IAAQC,cAAaY,MAAO,WAExF,GAAGP,EACF,OAAOV,EAASQ,OAAOE,EAAMI,MAAML,KAAK,CAAEC,MAAOA,EAAMK,MAGxDf,EAASS,KAAKO","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import getGroup from"../../../../../server/utils/groups/getGroup.js";export default async(s,r)=>{const e=s.cookies.session_token,[o,t]=await currentUserHasPermission(e,"system:group:read");if(o)return r.status(o.code).json({error:o.msg});if(!t)return r.status(403).json({error:"Insufficient permissions"});const{name:n}=s.params,[i,u]=await getGroup(decodeURIComponent(n));if(i)return r.status(i.code).json({error:i.msg});r.json(u)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/groups/[name]/GET.js","names":["currentUserHasPermission","getGroup","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","name","params","group","decodeURIComponent"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getGroup from '../../../../../server/utils/groups/getGroup.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:read');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { name } = request.params;\n\tconst [error, group] = await getGroup(decodeURIComponent(name));\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(group);\n};\n"],"mappings":"OAAOA,6BAA8B,6EAC9BC,aAAc,gEAENC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,qBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,GAASZ,EAAQa,QAClBH,EAAOI,SAAehB,SAASiB,mBAAmBH,IAEzD,GAAGF,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKK","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import removeUserFromGroup from"../../../../../../server/utils/groups/removeUserFromGroup.js";export default async(r,s)=>{const e=r.cookies.session_token,{userId:o}=r.body;if(!o)return s.status(400).json({error:"User ID is required"});const[t,n]=await currentUserHasPermission(e,"system:group:update");if(t)return s.status(t.code).json({error:t.msg});if(!n)return s.status(403).json({error:"Insufficient permissions"});const{name:i}=r.params,[u,m]=await removeUserFromGroup(o,decodeURIComponent(i));if(u)return s.status(u.code).json({error:u.msg});s.json(m)};
|
|
2
|
+
//# sourceMappingURL=DELETE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/groups/[name]/members/DELETE.js","names":["currentUserHasPermission","removeUserFromGroup","async","request","response","token","cookies","session_token","userId","body","status","json","error","permError","hasPermission","code","msg","name","params","result","decodeURIComponent"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport removeUserFromGroup from '../../../../../../server/utils/groups/removeUserFromGroup.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst { userId } = request.body;\n\n\tif(!userId){\n\t\treturn response.status(400).json({ error: 'User ID is required' });\n\t}\n\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { name } = request.params;\n\tconst [error, result] = await removeUserFromGroup(userId, decodeURIComponent(name));\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(result);\n};\n"],"mappings":"OAAOA,6BAA8B,gFAC9BC,wBAAyB,8EAEjBC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,OAAEA,GAAWL,EAAQM,KAE3B,IAAID,EACH,OAAOJ,EAASM,OAAO,KAAKC,KAAK,CAAEC,MAAO,wBAG3C,MAAOC,EAAWC,SAAuBd,yBAAyBK,EAAO,uBAEzE,GAAGQ,EACF,OAAOT,EAASM,OAAOG,EAAUE,MAAMJ,KAAK,CAAEC,MAAOC,EAAUG,MAGhE,IAAIF,EACH,OAAOV,EAASM,OAAO,KAAKC,KAAK,CAAEC,MAAO,6BAG3C,MAAMK,KAAEA,GAASd,EAAQe,QAClBN,EAAOO,SAAgBlB,oBAAoBO,EAAQY,mBAAmBH,IAE7E,GAAGL,EACF,OAAOR,EAASM,OAAOE,EAAMG,MAAMJ,KAAK,CAAEC,MAAOA,EAAMI,MAGxDZ,EAASO,KAAKQ","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import getGroupMembers from"../../../../../../server/utils/groups/getGroupMembers.js";export default async(s,r)=>{const e=s.cookies.session_token,[o,t]=await currentUserHasPermission(e,"system:group:read");if(o)return r.status(o.code).json({error:o.msg});if(!t)return r.status(403).json({error:"Insufficient permissions"});const{name:i}=s.params,n=parseInt(s.query.limit)||50,m=parseInt(s.query.offset)||0,[u,a]=await getGroupMembers(decodeURIComponent(i),{limit:n,offset:m});if(u)return r.status(u.code).json({error:u.msg});r.json(a)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/groups/[name]/members/GET.js","names":["currentUserHasPermission","getGroupMembers","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","name","params","limit","parseInt","query","offset","data","decodeURIComponent"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getGroupMembers from '../../../../../../server/utils/groups/getGroupMembers.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:read');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { name } = request.params;\n\tconst limit = parseInt(request.query.limit) || 50;\n\tconst offset = parseInt(request.query.offset) || 0;\n\tconst [error, data] = await getGroupMembers(decodeURIComponent(name), { limit, offset });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAAOA,6BAA8B,gFAC9BC,oBAAqB,0EAEbC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,qBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,GAASZ,EAAQa,OACnBC,EAAQC,SAASf,EAAQgB,MAAMF,QAAU,GACzCG,EAASF,SAASf,EAAQgB,MAAMC,SAAW,GAC1CP,EAAOQ,SAAcpB,gBAAgBqB,mBAAmBP,GAAO,CAAEE,QAAOG,WAE/E,GAAGP,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKS","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import addUserToGroup from"../../../../../../server/utils/groups/addUserToGroup.js";export default async(s,r)=>{const e=s.cookies.session_token,{userId:o}=s.body;if(!o)return r.status(400).json({error:"User ID is required"});const[t,n]=await currentUserHasPermission(e,"system:group:update");if(t)return r.status(t.code).json({error:t.msg});if(!n)return r.status(403).json({error:"Insufficient permissions"});const{name:i}=s.params,[u,a]=await addUserToGroup(o,decodeURIComponent(i));if(u)return r.status(u.code).json({error:u.msg});r.json(a)};
|
|
2
|
+
//# sourceMappingURL=POST.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/groups/[name]/members/POST.js","names":["currentUserHasPermission","addUserToGroup","async","request","response","token","cookies","session_token","userId","body","status","json","error","permError","hasPermission","code","msg","name","params","result","decodeURIComponent"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport addUserToGroup from '../../../../../../server/utils/groups/addUserToGroup.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst { userId } = request.body;\n\n\tif(!userId){\n\t\treturn response.status(400).json({ error: 'User ID is required' });\n\t}\n\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { name } = request.params;\n\tconst [error, result] = await addUserToGroup(userId, decodeURIComponent(name));\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(result);\n};\n"],"mappings":"OAAOA,6BAA8B,gFAC9BC,mBAAoB,yEAEZC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,OAAEA,GAAWL,EAAQM,KAE3B,IAAID,EACH,OAAOJ,EAASM,OAAO,KAAKC,KAAK,CAAEC,MAAO,wBAG3C,MAAOC,EAAWC,SAAuBd,yBAAyBK,EAAO,uBAEzE,GAAGQ,EACF,OAAOT,EAASM,OAAOG,EAAUE,MAAMJ,KAAK,CAAEC,MAAOC,EAAUG,MAGhE,IAAIF,EACH,OAAOV,EAASM,OAAO,KAAKC,KAAK,CAAEC,MAAO,6BAG3C,MAAMK,KAAEA,GAASd,EAAQe,QAClBN,EAAOO,SAAgBlB,eAAeO,EAAQY,mBAAmBH,IAExE,GAAGL,EACF,OAAOR,EAASM,OAAOE,EAAMG,MAAMJ,KAAK,CAAEC,MAAOA,EAAMI,MAGxDZ,EAASO,KAAKQ","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import removePermissionFromGroup from"../../../../../../server/utils/permissions/removePermissionFromGroup.js";export default async(s,r)=>{const e=s.cookies.session_token,{permissionName:o}=s.body;if(!o)return r.status(400).json({error:"Permission name is required"});const[i,n]=await currentUserHasPermission(e,"system:group:update");if(i)return r.status(i.code).json({error:i.msg});if(!n)return r.status(403).json({error:"Insufficient permissions"});const{name:t}=s.params,[m,u]=await removePermissionFromGroup(decodeURIComponent(t),o);if(m)return r.status(m.code).json({error:m.msg});r.json(u)};
|
|
2
|
+
//# sourceMappingURL=DELETE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/groups/[name]/permissions/DELETE.js","names":["currentUserHasPermission","removePermissionFromGroup","async","request","response","token","cookies","session_token","permissionName","body","status","json","error","permError","hasPermission","code","msg","name","params","result","decodeURIComponent"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport removePermissionFromGroup from '../../../../../../server/utils/permissions/removePermissionFromGroup.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst { permissionName } = request.body;\n\n\tif(!permissionName){\n\t\treturn response.status(400).json({ error: 'Permission name is required' });\n\t}\n\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { name } = request.params;\n\tconst [error, result] = await removePermissionFromGroup(decodeURIComponent(name), permissionName);\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(result);\n};\n"],"mappings":"OAAOA,6BAA8B,gFAC9BC,8BAA+B,yFAEvBC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,eAAEA,GAAmBL,EAAQM,KAEnC,IAAID,EACH,OAAOJ,EAASM,OAAO,KAAKC,KAAK,CAAEC,MAAO,gCAG3C,MAAOC,EAAWC,SAAuBd,yBAAyBK,EAAO,uBAEzE,GAAGQ,EACF,OAAOT,EAASM,OAAOG,EAAUE,MAAMJ,KAAK,CAAEC,MAAOC,EAAUG,MAGhE,IAAIF,EACH,OAAOV,EAASM,OAAO,KAAKC,KAAK,CAAEC,MAAO,6BAG3C,MAAMK,KAAEA,GAASd,EAAQe,QAClBN,EAAOO,SAAgBlB,0BAA0BmB,mBAAmBH,GAAOT,GAElF,GAAGI,EACF,OAAOR,EAASM,OAAOE,EAAMG,MAAMJ,KAAK,CAAEC,MAAOA,EAAMI,MAGxDZ,EAASO,KAAKQ","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import getPermissionsForGroups from"../../../../../../server/utils/permissions/getPermissionsForGroups.js";export default async(s,r)=>{const e=s.cookies.session_token,[o,i]=await currentUserHasPermission(e,"system:permissions:read");if(o)return r.status(o.code).json({error:o.msg});if(!i)return r.status(403).json({error:"Insufficient permissions"});const{name:n}=s.params,t=decodeURIComponent(n),[m,a]=await getPermissionsForGroups([{name:t}]);if(m)return r.status(m.code).json({error:m.msg});r.json({permissions:a})};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/groups/[name]/permissions/GET.js","names":["currentUserHasPermission","getPermissionsForGroups","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","name","params","groupName","decodeURIComponent","permissions"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getPermissionsForGroups from '../../../../../../server/utils/permissions/getPermissionsForGroups.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:permissions:read');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { name } = request.params;\n\tconst groupName = decodeURIComponent(name);\n\tconst [error, permissions] = await getPermissionsForGroups([{ name: groupName }]);\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json({ permissions });\n};\n"],"mappings":"OAAOA,6BAA8B,gFAC9BC,4BAA6B,uFAErBC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,2BAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,GAASZ,EAAQa,OACnBC,EAAYC,mBAAmBH,IAC9BF,EAAOM,SAAqBlB,wBAAwB,CAAC,CAAEc,KAAME,KAEpE,GAAGJ,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAK,CAAEO","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import addPermissionToGroup from"../../../../../../server/utils/permissions/addPermissionToGroup.js";export default async(s,r)=>{const e=s.cookies.session_token,{permissionName:o}=s.body;if(!o)return r.status(400).json({error:"Permission name is required"});const[i,n]=await currentUserHasPermission(e,"system:group:update");if(i)return r.status(i.code).json({error:i.msg});if(!n)return r.status(403).json({error:"Insufficient permissions"});const{name:t}=s.params,[m,a]=await addPermissionToGroup(decodeURIComponent(t),o);if(m)return r.status(m.code).json({error:m.msg});r.json(a)};
|
|
2
|
+
//# sourceMappingURL=POST.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/groups/[name]/permissions/POST.js","names":["currentUserHasPermission","addPermissionToGroup","async","request","response","token","cookies","session_token","permissionName","body","status","json","error","permError","hasPermission","code","msg","name","params","result","decodeURIComponent"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport addPermissionToGroup from '../../../../../../server/utils/permissions/addPermissionToGroup.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst { permissionName } = request.body;\n\n\tif(!permissionName){\n\t\treturn response.status(400).json({ error: 'Permission name is required' });\n\t}\n\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { name } = request.params;\n\tconst [error, result] = await addPermissionToGroup(decodeURIComponent(name), permissionName);\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(result);\n};\n"],"mappings":"OAAOA,6BAA8B,gFAC9BC,yBAA0B,oFAElBC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,eAAEA,GAAmBL,EAAQM,KAEnC,IAAID,EACH,OAAOJ,EAASM,OAAO,KAAKC,KAAK,CAAEC,MAAO,gCAG3C,MAAOC,EAAWC,SAAuBd,yBAAyBK,EAAO,uBAEzE,GAAGQ,EACF,OAAOT,EAASM,OAAOG,EAAUE,MAAMJ,KAAK,CAAEC,MAAOC,EAAUG,MAGhE,IAAIF,EACH,OAAOV,EAASM,OAAO,KAAKC,KAAK,CAAEC,MAAO,6BAG3C,MAAMK,KAAEA,GAASd,EAAQe,QAClBN,EAAOO,SAAgBlB,qBAAqBmB,mBAAmBH,GAAOT,GAE7E,GAAGI,EACF,OAAOR,EAASM,OAAOE,EAAMG,MAAMJ,KAAK,CAAEC,MAAOA,EAAMI,MAGxDZ,EAASO,KAAKQ","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import deletePage from"../../../../server/utils/pages/deletePage.js";const rootDir=resolve(import.meta.dirname,"../../../../app-public");export default async(e,s)=>{const r=e.cookies.session_token,[o,t]=await currentUserHasPermission(r,"system:pages:delete");if(o)return s.status(o.code).json({error:o.msg});if(!t)return s.status(403).json({error:"Insufficient permissions"});const{files:i}=e.body||{};if(!i?.length)return s.status(400).json({error:"No files specified"});const[n,a]=await deletePage({rootDir:rootDir,files:i});if(n)return s.status(n.code).json({error:n.msg});s.json(a)};
|
|
2
|
+
//# sourceMappingURL=DELETE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/pages/DELETE.js","names":["resolve","currentUserHasPermission","deletePage","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","files","body","length","result"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport deletePage from '../../../../server/utils/pages/deletePage.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:delete');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { files } = request.body || {};\n\n\tif(!files?.length){\n\t\treturn response.status(400).json({ error: 'No files specified' });\n\t}\n\n\tconst [error, result] = await deletePage({ rootDir, files });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(result);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,0EAC9BC,eAAgB,+CAEvB,MAAMC,QAAUH,oBAAoBI,QAAS,yCAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,MAAEA,GAAUZ,EAAQa,MAAQ,CAAC,EAEnC,IAAID,GAAOE,OACV,OAAOb,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,uBAG3C,MAAOA,EAAOK,SAAgBnB,WAAW,CAAEC,gBAASe,UAEpD,GAAGF,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKM","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import listPages from"../../../../server/utils/pages/listPages.js";const rootDir=resolve(import.meta.dirname,"../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[o,t]=await currentUserHasPermission(e,"system:pages:read");if(o)return r.status(o.code).json({error:o.msg});if(!t)return r.status(403).json({error:"Insufficient permissions"});const[i,n]=await listPages({rootDir:rootDir});if(i)return r.status(i.code).json({error:i.msg});r.json(n)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/pages/GET.js","names":["resolve","currentUserHasPermission","listPages","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport listPages from '../../../../server/utils/pages/listPages.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:read');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst [error, data] = await listPages({ rootDir });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,0EAC9BC,cAAe,8CAEtB,MAAMC,QAAUH,oBAAoBI,QAAS,yCAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,qBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAOA,EAAOE,SAAchB,UAAU,CAAEC,kBAExC,GAAGa,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKG","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import getSession from"../../../../server/utils/auth/getSession.js";import createPage from"../../../../server/utils/pages/createPage.js";const rootDir=resolve(import.meta.dirname,"../../../../app-public");export default async(e,r)=>{const s=e.cookies.session_token,[t,o]=await currentUserHasPermission(s,"system:pages:create");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const{directory:i,name:a,template:n}=e.body;if(!a)return r.status(400).json({error:"Page name is required"});const[,m]=await getSession({token:s}),u=m?.user?.name||"",[c,p]=await createPage({rootDir:rootDir,directory:i,name:a,template:n,author:u});if(c)return r.status(c.code).json({error:c.msg});r.status(201).json(p)};
|
|
2
|
+
//# sourceMappingURL=POST.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/pages/POST.js","names":["resolve","currentUserHasPermission","getSession","createPage","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","directory","name","template","body","sessionData","author","user","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getSession from '../../../../server/utils/auth/getSession.js';\nimport createPage from '../../../../server/utils/pages/createPage.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:create');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { directory, name, template } = request.body;\n\n\tif(!name){\n\t\treturn response.status(400).json({ error: 'Page name is required' });\n\t}\n\n\tconst [, sessionData] = await getSession({ token });\n\tconst author = sessionData?.user?.name || '';\n\n\tconst [error, data] = await createPage({ rootDir, directory, name, template, author });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.status(201).json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,0EAC9BC,eAAgB,qDAChBC,eAAgB,+CAEvB,MAAMC,QAAUJ,oBAAoBK,QAAS,yCAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBZ,yBAAyBQ,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,UAAEA,EAASC,KAAEA,EAAIC,SAAEA,GAAad,EAAQe,KAE9C,IAAIF,EACH,OAAOZ,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,0BAG3C,MAAO,CAAEM,SAAqBrB,WAAW,CAAEO,UACrCe,EAASD,GAAaE,MAAML,MAAQ,IAEnCH,EAAOS,SAAcvB,WAAW,CAAEC,gBAASe,YAAWC,OAAMC,WAAUG,WAE7E,GAAGP,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASM,OAAO,KAAKE,KAAKU","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import listDirectories from"../../../../../server/utils/pages/listDirectories.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(r,s)=>{const e=r.cookies.session_token,[o,i]=await currentUserHasPermission(e,"system:pages:read");if(o)return s.status(o.code).json({error:o.msg});if(!i)return s.status(403).json({error:"Insufficient permissions"});const[t,n]=await listDirectories({rootDir:rootDir});if(t)return s.status(t.code).json({error:t.msg});s.json(n)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/pages/directories/GET.js","names":["resolve","currentUserHasPermission","listDirectories","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport listDirectories from '../../../../../server/utils/pages/listDirectories.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:read');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst [error, data] = await listDirectories({ rootDir });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,oBAAqB,uDAE5B,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,qBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAOA,EAAOE,SAAchB,gBAAgB,CAAEC,kBAE9C,GAAGa,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKG","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import disablePage from"../../../../../server/utils/pages/disablePage.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[o,i]=await currentUserHasPermission(e,"system:pages:update");if(o)return r.status(o.code).json({error:o.msg});if(!i)return r.status(403).json({error:"Insufficient permissions"});const{file:t}=s.body||{};if(!t)return r.status(400).json({error:"File path is required"});const[a,n]=await disablePage({rootDir:rootDir,file:t});if(a)return r.status(a.code).json({error:a.msg});r.json(n)};
|
|
2
|
+
//# sourceMappingURL=PUT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/pages/disable/PUT.js","names":["resolve","currentUserHasPermission","disablePage","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","file","body","result"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport disablePage from '../../../../../server/utils/pages/disablePage.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { file } = request.body || {};\n\n\tif(!file){\n\t\treturn response.status(400).json({ error: 'File path is required' });\n\t}\n\n\tconst [error, result] = await disablePage({ rootDir, file });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(result);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,gBAAiB,mDAExB,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,GAASZ,EAAQa,MAAQ,CAAC,EAElC,IAAID,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,0BAG3C,MAAOA,EAAOI,SAAgBlB,YAAY,CAAEC,gBAASe,SAErD,GAAGF,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKK","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import enablePage from"../../../../../server/utils/pages/enablePage.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(r,s)=>{const e=r.cookies.session_token,[o,t]=await currentUserHasPermission(e,"system:pages:update");if(o)return s.status(o.code).json({error:o.msg});if(!t)return s.status(403).json({error:"Insufficient permissions"});const{file:i}=r.body||{};if(!i)return s.status(400).json({error:"File path is required"});const[n,a]=await enablePage({rootDir:rootDir,file:i});if(n)return s.status(n.code).json({error:n.msg});s.json(a)};
|
|
2
|
+
//# sourceMappingURL=PUT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/pages/enable/PUT.js","names":["resolve","currentUserHasPermission","enablePage","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","file","body","result"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport enablePage from '../../../../../server/utils/pages/enablePage.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { file } = request.body || {};\n\n\tif(!file){\n\t\treturn response.status(400).json({ error: 'File path is required' });\n\t}\n\n\tconst [error, result] = await enablePage({ rootDir, file });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(result);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,eAAgB,kDAEvB,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,GAASZ,EAAQa,MAAQ,CAAC,EAElC,IAAID,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,0BAG3C,MAAOA,EAAOI,SAAgBlB,WAAW,CAAEC,gBAASe,SAEpD,GAAGF,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKK","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import getPage from"../../../../../server/utils/pages/getPage.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(r,s)=>{const e=r.cookies.session_token,[t,o]=await currentUserHasPermission(e,"system:pages:read");if(t)return s.status(t.code).json({error:t.msg});if(!o)return s.status(403).json({error:"Insufficient permissions"});const{file:i}=r.query;if(!i)return s.status(400).json({error:"File path is required"});const[n,a]=await getPage({rootDir:rootDir,file:i});if(n)return s.status(n.code).json({error:n.msg});s.json(a)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/pages/file/GET.js","names":["resolve","currentUserHasPermission","getPage","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","file","query","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getPage from '../../../../../server/utils/pages/getPage.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:read');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { file } = request.query;\n\n\tif(!file){\n\t\treturn response.status(400).json({ error: 'File path is required' });\n\t}\n\n\tconst [error, data] = await getPage({ rootDir, file });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,YAAa,+CAEpB,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,qBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,GAASZ,EAAQa,MAEzB,IAAID,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,0BAG3C,MAAOA,EAAOI,SAAclB,QAAQ,CAAEC,gBAASe,SAE/C,GAAGF,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKK","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import movePage from"../../../../../server/utils/pages/movePage.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(r,e)=>{const s=r.cookies.session_token,[o,t]=await currentUserHasPermission(s,"system:pages:update");if(o)return e.status(o.code).json({error:o.msg});if(!t)return e.status(403).json({error:"Insufficient permissions"});const{file:i,newFile:n}=r.body;if(!i)return e.status(400).json({error:"File path is required"});if(!n)return e.status(400).json({error:"New file path is required"});const[a,u]=await movePage({rootDir:rootDir,file:i,newFile:n});if(a)return e.status(a.code).json({error:a.msg});e.json(u)};
|
|
2
|
+
//# sourceMappingURL=PATCH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/pages/file/PATCH.js","names":["resolve","currentUserHasPermission","movePage","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","file","newFile","body","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport movePage from '../../../../../server/utils/pages/movePage.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { file, newFile } = request.body;\n\n\tif(!file){\n\t\treturn response.status(400).json({ error: 'File path is required' });\n\t}\n\n\tif(!newFile){\n\t\treturn response.status(400).json({ error: 'New file path is required' });\n\t}\n\n\tconst [error, data] = await movePage({ rootDir, file, newFile });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,aAAc,gDAErB,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,EAAIC,QAAEA,GAAYb,EAAQc,KAElC,IAAIF,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,0BAG3C,IAAIG,EACH,OAAOZ,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,8BAG3C,MAAOA,EAAOK,SAAcnB,SAAS,CAAEC,gBAASe,OAAMC,YAEtD,GAAGH,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKM","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import updatePage from"../../../../../server/utils/pages/updatePage.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(e,r)=>{const s=e.cookies.session_token,[t,o]=await currentUserHasPermission(s,"system:pages:update");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const{file:i,name:n,title:a,description:u,author:p,template:m,contents:c}=e.body;if(!i)return r.status(400).json({error:"File path is required"});const[l,d]=await updatePage({rootDir:rootDir,file:i,name:n,title:a,description:u,author:p,template:m,contents:c});if(l)return r.status(l.code).json({error:l.msg});r.json(d)};
|
|
2
|
+
//# sourceMappingURL=PUT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/pages/file/PUT.js","names":["resolve","currentUserHasPermission","updatePage","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","file","name","title","description","author","template","contents","body","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport updatePage from '../../../../../server/utils/pages/updatePage.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { file, name, title, description, author, template, contents } = request.body;\n\n\tif(!file){\n\t\treturn response.status(400).json({ error: 'File path is required' });\n\t}\n\n\tconst [error, data] = await updatePage({ rootDir, file, name, title, description, author, template, contents });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,eAAgB,kDAEvB,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,EAAIC,KAAEA,EAAIC,MAAEA,EAAKC,YAAEA,EAAWC,OAAEA,EAAMC,SAAEA,EAAQC,SAAEA,GAAalB,EAAQmB,KAE/E,IAAIP,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,0BAG3C,MAAOA,EAAOU,SAAcxB,WAAW,CAAEC,gBAASe,OAAMC,OAAMC,QAAOC,cAAaC,SAAQC,WAAUC,aAEpG,GAAGR,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKW","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import listTemplates from"../../../../../server/utils/pages/listTemplates.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[t,o]=await currentUserHasPermission(e,"system:pages:read");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const[i,n]=await listTemplates({rootDir:rootDir});if(i)return r.status(i.code).json({error:i.msg});r.json(n)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/pages/templates/GET.js","names":["resolve","currentUserHasPermission","listTemplates","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport listTemplates from '../../../../../server/utils/pages/listTemplates.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:read');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst [error, data] = await listTemplates({ rootDir });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,kBAAmB,qDAE1B,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,qBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAOA,EAAOE,SAAchB,cAAc,CAAEC,kBAE5C,GAAGa,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKG","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import deletePermission from"../../../../server/utils/permissions/deletePermission.js";export default async(s,e)=>{const r=s.cookies.session_token,{names:n}=s.body;if(!n||!Array.isArray(n)||0===n.length)return e.status(400).json({error:"Names array is required"});const[t,i]=await currentUserHasPermission(r,"system:permissions:manage");if(t)return e.status(t.code).json({error:t.msg});if(!i)return e.status(403).json({error:"Insufficient permissions"});const o=n.filter(s=>{const e=s.includes(":")?s.split(":")[0]:null;return e&&"admin"!==e});if(o.length)return e.status(403).json({error:`Cannot delete non-admin permissions: ${o.join(", ")}`});const a=[],m=[];for(const s of n){const[e,r]=await deletePermission(s);e?m.push({name:s,error:e.msg}):a.push(r)}if(m.length>0)return e.status(207).json({deleted:a,errors:m});e.json({deleted:a})};
|
|
2
|
+
//# sourceMappingURL=DELETE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/permissions/DELETE.js","names":["currentUserHasPermission","deletePermission","async","request","response","token","cookies","session_token","names","body","Array","isArray","length","status","json","error","permError","hasPermission","code","msg","nonAdmin","filter","n","owner","includes","split","join","deleted","errors","name","result","push"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport deletePermission from '../../../../server/utils/permissions/deletePermission.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst { names } = request.body;\n\n\tif(!names || !Array.isArray(names) || names.length === 0){\n\t\treturn response.status(400).json({ error: 'Names array is required' });\n\t}\n\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:permissions:manage');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst nonAdmin = names.filter(n => {\n\t\tconst owner = n.includes(':') ? n.split(':')[0] : null;\n\t\treturn owner && owner !== 'admin';\n\t});\n\tif(nonAdmin.length){\n\t\treturn response.status(403).json({ error: `Cannot delete non-admin permissions: ${nonAdmin.join(', ')}` });\n\t}\n\n\tconst deleted = [];\n\tconst errors = [];\n\n\tfor(const name of names){\n\t\tconst [error, result] = await deletePermission(name);\n\t\tif(error){\n\t\t\terrors.push({ name, error: error.msg });\n\t\t} else {\n\t\t\tdeleted.push(result);\n\t\t}\n\t}\n\n\tif(errors.length > 0){\n\t\treturn response.status(207).json({ deleted, errors });\n\t}\n\n\tresponse.json({ deleted });\n};\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,qBAAsB,0EAEdC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,MAAEA,GAAUL,EAAQM,KAE1B,IAAID,IAAUE,MAAMC,QAAQH,IAA2B,IAAjBA,EAAMI,OAC3C,OAAOR,EAASS,OAAO,KAAKC,KAAK,CAAEC,MAAO,4BAG3C,MAAOC,EAAWC,SAAuBjB,yBAAyBK,EAAO,6BAEzE,GAAGW,EACF,OAAOZ,EAASS,OAAOG,EAAUE,MAAMJ,KAAK,CAAEC,MAAOC,EAAUG,MAGhE,IAAIF,EACH,OAAOb,EAASS,OAAO,KAAKC,KAAK,CAAEC,MAAO,6BAG3C,MAAMK,EAAWZ,EAAMa,OAAOC,IAC7B,MAAMC,EAAQD,EAAEE,SAAS,KAAOF,EAAEG,MAAM,KAAK,GAAK,KAClD,OAAOF,GAAmB,UAAVA,IAEjB,GAAGH,EAASR,OACX,OAAOR,EAASS,OAAO,KAAKC,KAAK,CAAEC,MAAO,wCAAwCK,EAASM,KAAK,UAGjG,MAAMC,EAAU,GACVC,EAAS,GAEf,IAAI,MAAMC,KAAQrB,EAAM,CACvB,MAAOO,EAAOe,SAAgB7B,iBAAiB4B,GAC5Cd,EACFa,EAAOG,KAAK,CAAEF,OAAMd,MAAOA,EAAMI,MAEjCQ,EAAQI,KAAKD,EAEf,CAEA,GAAGF,EAAOhB,OAAS,EAClB,OAAOR,EAASS,OAAO,KAAKC,KAAK,CAAEa,UAASC,WAG7CxB,EAASU,KAAK,CAAEa","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import getAllPermissions from"../../../../server/utils/permissions/getAllPermissions.js";export default async(s,r)=>{const e=s.cookies.session_token,[i,o]=await currentUserHasPermission(e,"system:permissions:read");if(i)return r.status(i.code).json({error:i.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const t=parseInt(s.query.limit)||50,n=parseInt(s.query.offset)||0,m=s.query.owner,[u,a]=await getAllPermissions({limit:t,offset:n,owner:m});if(u)return r.status(u.code).json({error:u.msg});r.json(a)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/permissions/GET.js","names":["currentUserHasPermission","getAllPermissions","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","limit","parseInt","query","offset","owner","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getAllPermissions from '../../../../server/utils/permissions/getAllPermissions.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:permissions:read');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst limit = parseInt(request.query.limit) || 50;\n\tconst offset = parseInt(request.query.offset) || 0;\n\tconst owner = request.query.owner;\n\tconst [error, data] = await getAllPermissions({ limit, offset, owner });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,sBAAuB,2EAEfC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,2BAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,EAAQC,SAASb,EAAQc,MAAMF,QAAU,GACzCG,EAASF,SAASb,EAAQc,MAAMC,SAAW,EAC3CC,EAAQhB,EAAQc,MAAME,OACrBN,EAAOO,SAAcnB,kBAAkB,CAAEc,QAAOG,SAAQC,UAE/D,GAAGN,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKQ","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import updatePermission from"../../../../server/utils/permissions/updatePermission.js";export default async(s,r)=>{const e=s.cookies.session_token,{name:i,description:o}=s.body;if(!i)return r.status(400).json({error:"Permission name is required"});if(i.startsWith("system:"))return r.status(403).json({error:"System permissions cannot be modified"});const[t,n]=await currentUserHasPermission(e,"system:permissions:manage");if(t)return r.status(t.code).json({error:t.msg});if(!n)return r.status(403).json({error:"Insufficient permissions"});const m={};void 0!==o&&(m.description=o);const[a,u]=await updatePermission(i,m);if(a)return r.status(a.code).json({error:a.msg});r.json(u)};
|
|
2
|
+
//# sourceMappingURL=PATCH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/permissions/PATCH.js","names":["currentUserHasPermission","updatePermission","async","request","response","token","cookies","session_token","name","description","body","status","json","error","startsWith","permError","hasPermission","code","msg","updates","undefined","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport updatePermission from '../../../../server/utils/permissions/updatePermission.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst { name, description } = request.body;\n\n\tif(!name){\n\t\treturn response.status(400).json({ error: 'Permission name is required' });\n\t}\n\n\tif(name.startsWith('system:')){\n\t\treturn response.status(403).json({ error: 'System permissions cannot be modified' });\n\t}\n\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:permissions:manage');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst updates = {};\n\tif(description !== undefined) updates.description = description;\n\n\tconst [error, result] = await updatePermission(name, updates);\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(result);\n};\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,qBAAsB,0EAEdC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,KAAEA,EAAIC,YAAEA,GAAgBN,EAAQO,KAEtC,IAAIF,EACH,OAAOJ,EAASO,OAAO,KAAKC,KAAK,CAAEC,MAAO,gCAG3C,GAAGL,EAAKM,WAAW,WAClB,OAAOV,EAASO,OAAO,KAAKC,KAAK,CAAEC,MAAO,0CAG3C,MAAOE,EAAWC,SAAuBhB,yBAAyBK,EAAO,6BAEzE,GAAGU,EACF,OAAOX,EAASO,OAAOI,EAAUE,MAAML,KAAK,CAAEC,MAAOE,EAAUG,MAGhE,IAAIF,EACH,OAAOZ,EAASO,OAAO,KAAKC,KAAK,CAAEC,MAAO,6BAG3C,MAAMM,EAAU,CAAC,OACEC,IAAhBX,IAA2BU,EAAQV,YAAcA,GAEpD,MAAOI,EAAOQ,SAAgBpB,iBAAiBO,EAAMW,GAErD,GAAGN,EACF,OAAOT,EAASO,OAAOE,EAAMI,MAAML,KAAK,CAAEC,MAAOA,EAAMK,MAGxDd,EAASQ,KAAKS","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import createPermission from"../../../../server/utils/permissions/createPermission.js";export default async(r,s)=>{const e=r.cookies.session_token,{permissions:o}=r.body;if(!o||!Array.isArray(o)||0===o.length)return s.status(400).json({error:"Permissions array is required"});for(const r of o){if(!r.resource||r.resource.includes(":"))return s.status(400).json({error:`Invalid resource name: "${r.resource}". Cannot be empty or contain ":"`});if(!r.action||r.action.includes(":"))return s.status(400).json({error:`Invalid action: "${r.action}". Cannot be empty or contain ":"`})}const[n,t]=await currentUserHasPermission(e,"system:permissions:manage");if(n)return s.status(n.code).json({error:n.msg});if(!t)return s.status(403).json({error:"Insufficient permissions"});const i=[],a=[];for(const r of o){const[s,e]=await createPermission({resource:r.resource,action:r.action,description:r.description,owner:"custom"});s?a.push({resource:r.resource,action:r.action,error:s.msg}):i.push(e)}if(a.length>0)return s.status(207).json({created:i,errors:a});s.json({created:i})};
|
|
2
|
+
//# sourceMappingURL=POST.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/permissions/POST.js","names":["currentUserHasPermission","createPermission","async","request","response","token","cookies","session_token","permissions","body","Array","isArray","length","status","json","error","p","resource","includes","action","permError","hasPermission","code","msg","created","errors","result","description","owner","push"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport createPermission from '../../../../server/utils/permissions/createPermission.js';\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst { permissions } = request.body;\n\n\tif(!permissions || !Array.isArray(permissions) || permissions.length === 0){\n\t\treturn response.status(400).json({ error: 'Permissions array is required' });\n\t}\n\n\tfor(const p of permissions){\n\t\tif(!p.resource || p.resource.includes(':')){\n\t\t\treturn response.status(400).json({ error: `Invalid resource name: \"${p.resource}\". Cannot be empty or contain \":\"` });\n\t\t}\n\t\tif(!p.action || p.action.includes(':')){\n\t\t\treturn response.status(400).json({ error: `Invalid action: \"${p.action}\". Cannot be empty or contain \":\"` });\n\t\t}\n\t}\n\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:permissions:manage');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst created = [];\n\tconst errors = [];\n\n\tfor(const p of permissions){\n\t\tconst [error, result] = await createPermission({ resource: p.resource, action: p.action, description: p.description, owner: 'custom' });\n\t\tif(error){\n\t\t\terrors.push({ resource: p.resource, action: p.action, error: error.msg });\n\t\t} else {\n\t\t\tcreated.push(result);\n\t\t}\n\t}\n\n\tif(errors.length > 0){\n\t\treturn response.status(207).json({ created, errors });\n\t}\n\n\tresponse.json({ created });\n};\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,qBAAsB,0EAEdC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,YAAEA,GAAgBL,EAAQM,KAEhC,IAAID,IAAgBE,MAAMC,QAAQH,IAAuC,IAAvBA,EAAYI,OAC7D,OAAOR,EAASS,OAAO,KAAKC,KAAK,CAAEC,MAAO,kCAG3C,IAAI,MAAMC,KAAKR,EAAY,CAC1B,IAAIQ,EAAEC,UAAYD,EAAEC,SAASC,SAAS,KACrC,OAAOd,EAASS,OAAO,KAAKC,KAAK,CAAEC,MAAO,2BAA2BC,EAAEC,8CAExE,IAAID,EAAEG,QAAUH,EAAEG,OAAOD,SAAS,KACjC,OAAOd,EAASS,OAAO,KAAKC,KAAK,CAAEC,MAAO,oBAAoBC,EAAEG,2CAElE,CAEA,MAAOC,EAAWC,SAAuBrB,yBAAyBK,EAAO,6BAEzE,GAAGe,EACF,OAAOhB,EAASS,OAAOO,EAAUE,MAAMR,KAAK,CAAEC,MAAOK,EAAUG,MAGhE,IAAIF,EACH,OAAOjB,EAASS,OAAO,KAAKC,KAAK,CAAEC,MAAO,6BAG3C,MAAMS,EAAU,GACVC,EAAS,GAEf,IAAI,MAAMT,KAAKR,EAAY,CAC1B,MAAOO,EAAOW,SAAgBzB,iBAAiB,CAAEgB,SAAUD,EAAEC,SAAUE,OAAQH,EAAEG,OAAQQ,YAAaX,EAAEW,YAAaC,MAAO,WACzHb,EACFU,EAAOI,KAAK,CAAEZ,SAAUD,EAAEC,SAAUE,OAAQH,EAAEG,OAAQJ,MAAOA,EAAMQ,MAEnEC,EAAQK,KAAKH,EAEf,CAEA,GAAGD,EAAOb,OAAS,EAClB,OAAOR,EAASS,OAAO,KAAKC,KAAK,CAAEU,UAASC,WAG7CrB,EAASU,KAAK,CAAEU","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import listSettings from"../../../../../server/utils/settings/listSettings.js";export default async(s,r)=>{const e=s.cookies.session_token,[t,i]=await currentUserHasPermission(e,"system:settings:read");if(t)return r.status(t.code).json({error:t.msg});if(!i)return r.status(403).json({error:"Insufficient permissions"});const{owner:n}=s.params,o=parseInt(s.query.limit)||50,a=parseInt(s.query.offset)||0,[m,u]=await listSettings({owner:n,limit:o,offset:a});if(m)return r.status(m.code).json({error:m.msg});r.json(u)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/settings/[owner]/GET.js","names":["currentUserHasPermission","listSettings","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","owner","params","limit","parseInt","query","offset","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport listSettings from '../../../../../server/utils/settings/listSettings.js';\n\nexport default async (request, response) => {\n const token = request.cookies.session_token;\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:settings:read');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'Insufficient permissions' });\n }\n\n const { owner } = request.params;\n const limit = parseInt(request.query.limit) || 50;\n const offset = parseInt(request.query.offset) || 0;\n const [error, data] = await listSettings({ owner, limit, offset });\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n response.json(data);\n};\n"],"mappings":"OAAOA,6BAA8B,6EAC9BC,iBAAkB,sEAEVC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,wBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,MAAEA,GAAUZ,EAAQa,OACpBC,EAAQC,SAASf,EAAQgB,MAAMF,QAAU,GACzCG,EAASF,SAASf,EAAQgB,MAAMC,SAAW,GAC1CP,EAAOQ,SAAcpB,aAAa,CAAEc,QAAOE,QAAOG,WAEzD,GAAGP,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKS","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import getSession from"../../../../../../server/utils/auth/getSession.js";import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import deleteSetting from"../../../../../../server/utils/settings/deleteSetting.js";export default async(e,s)=>{const t=e.cookies.session_token,[r,n]=await getSession({token:t});if(r||!n)return s.status(401).json({error:"Unauthorized"});const[o,i]=await currentUserHasPermission(t,"system:custom-settings:manage");if(o||!i)return s.status(403).json({error:"Forbidden: Cannot delete settings"});const{owner:a,name:m}=e.params,[u,g]=await deleteSetting(a,m);if(u)return s.status(u.code).json({error:u.msg});s.json(g)};
|
|
2
|
+
//# sourceMappingURL=DELETE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/settings/[owner]/[name]/DELETE.js","names":["getSession","currentUserHasPermission","deleteSetting","async","request","response","sessionToken","cookies","session_token","sessionError","session","token","status","json","error","permError","hasPermission","owner","name","params","result","code","msg"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../server/utils/auth/getSession.js';\nimport currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport deleteSetting from '../../../../../../server/utils/settings/deleteSetting.js';\n\nexport default async (request, response) => {\n const sessionToken = request.cookies.session_token;\n const [sessionError, session] = await getSession({ token: sessionToken });\n if(sessionError || !session){\n return response.status(401).json({ error: 'Unauthorized' });\n }\n\n const [permError, hasPermission] = await currentUserHasPermission(sessionToken, 'system:custom-settings:manage');\n if(permError || !hasPermission){\n return response.status(403).json({ error: 'Forbidden: Cannot delete settings' });\n }\n\n const { owner, name } = request.params;\n\n const [error, result] = await deleteSetting(owner, name);\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n response.json(result);\n};\n"],"mappings":"OAAOA,eAAgB,2DAChBC,6BAA8B,gFAC9BC,kBAAmB,0EAEXC,MAAOC,EAASC,KAC7B,MAAMC,EAAeF,EAAQG,QAAQC,eAC9BC,EAAcC,SAAiBV,WAAW,CAAEW,MAAOL,IAC1D,GAAGG,IAAiBC,EAClB,OAAOL,EAASO,OAAO,KAAKC,KAAK,CAAEC,MAAO,iBAG5C,MAAOC,EAAWC,SAAuBf,yBAAyBK,EAAc,iCAChF,GAAGS,IAAcC,EACf,OAAOX,EAASO,OAAO,KAAKC,KAAK,CAAEC,MAAO,sCAG5C,MAAMG,MAAEA,EAAKC,KAAEA,GAASd,EAAQe,QAEzBL,EAAOM,SAAgBlB,cAAce,EAAOC,GAEnD,GAAGJ,EACD,OAAOT,EAASO,OAAOE,EAAMO,MAAMR,KAAK,CAAEC,MAAOA,EAAMQ,MAGzDjB,EAASQ,KAAKO","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import getSession from"../../../../../../server/utils/auth/getSession.js";import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import getSettingWithMetadata from"../../../../../../server/utils/settings/getSettingWithMetadata.js";export default async(s,t)=>{const{owner:e,name:r}=s.params,[i,n]=await getSettingWithMetadata(e,r);if(i)return t.status(i.code).json({error:i.msg});if(!n.isPublic){const e=s.cookies.session_token,[r,i]=await getSession({token:e});if(r||!i)return t.status(401).json({error:"Unauthorized"});const[n,o]=await currentUserHasPermission(e,"system:settings:read");if(n||!o)return t.status(403).json({error:"Forbidden"})}t.json(n)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/settings/[owner]/[name]/GET.js","names":["getSession","currentUserHasPermission","getSettingWithMetadata","async","request","response","owner","name","params","error","setting","status","code","json","msg","isPublic","sessionToken","cookies","session_token","sessionError","session","token","permError","hasPermission"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../server/utils/auth/getSession.js';\nimport currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getSettingWithMetadata from '../../../../../../server/utils/settings/getSettingWithMetadata.js';\n\nexport default async (request, response) => {\n const { owner, name } = request.params;\n\n const [error, setting] = await getSettingWithMetadata(owner, name);\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n if(!setting.isPublic){\n const sessionToken = request.cookies.session_token;\n const [sessionError, session] = await getSession({ token: sessionToken });\n if(sessionError || !session){\n return response.status(401).json({ error: 'Unauthorized' });\n }\n\n const [permError, hasPermission] = await currentUserHasPermission(sessionToken, 'system:settings:read');\n if(permError || !hasPermission){\n return response.status(403).json({ error: 'Forbidden' });\n }\n }\n\n response.json(setting);\n};\n\n"],"mappings":"OAAOA,eAAgB,2DAChBC,6BAA8B,gFAC9BC,2BAA4B,mFAEpBC,MAAOC,EAASC,KAC7B,MAAMC,MAAEA,EAAKC,KAAEA,GAASH,EAAQI,QAEzBC,EAAOC,SAAiBR,uBAAuBI,EAAOC,GAE7D,GAAGE,EACD,OAAOJ,EAASM,OAAOF,EAAMG,MAAMC,KAAK,CAAEJ,MAAOA,EAAMK,MAGzD,IAAIJ,EAAQK,SAAS,CACnB,MAAMC,EAAeZ,EAAQa,QAAQC,eAC9BC,EAAcC,SAAiBpB,WAAW,CAAEqB,MAAOL,IAC1D,GAAGG,IAAiBC,EAClB,OAAOf,EAASM,OAAO,KAAKE,KAAK,CAAEJ,MAAO,iBAG5C,MAAOa,EAAWC,SAAuBtB,yBAAyBe,EAAc,wBAChF,GAAGM,IAAcC,EACf,OAAOlB,EAASM,OAAO,KAAKE,KAAK,CAAEJ,MAAO,aAE9C,CAEAJ,EAASQ,KAAKH","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import getSession from"../../../../../../server/utils/auth/getSession.js";import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import setSetting from"../../../../../../server/utils/settings/setSetting.js";import getSettingWithMetadata from"../../../../../../server/utils/settings/getSettingWithMetadata.js";export default async(s,t)=>{const e=s.cookies.session_token,[r,n]=await getSession({token:e});if(r||!n)return t.status(401).json({error:"Unauthorized"});const{owner:i,name:o}=s.params;if("system"===i){const[s,r]=await currentUserHasPermission(e,"system:settings:update");if(s||!r)return t.status(403).json({error:"Forbidden: Cannot modify system settings"})}else if("custom"===i){const[s,r]=await currentUserHasPermission(e,"system:custom-settings:manage");if(s||!r)return t.status(403).json({error:"Forbidden: Cannot manage custom settings"})}else{const[s,r]=await currentUserHasPermission(e,"system:extension:configure");if(s||!r)return t.status(403).json({error:"Forbidden: Cannot modify extension settings"})}const{value:a,type:u,isPublic:m,description:c}=s.body;if(void 0===a)return t.status(400).json({error:"Value is required"});if("custom"!==i){const[s,e]=await getSettingWithMetadata(i,o);if(s)return t.status(s.code).json({error:s.msg});const[r,n]=await setSetting(i,o,a,e.type,e.isPublic,e.description);return r?t.status(r.code).json({error:r.msg}):t.json(n)}const[g,d]=await setSetting(i,o,a,u,m,c);if(g)return t.status(g.code).json({error:g.msg});t.json(d)};
|
|
2
|
+
//# sourceMappingURL=POST.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/settings/[owner]/[name]/POST.js","names":["getSession","currentUserHasPermission","setSetting","getSettingWithMetadata","async","request","response","sessionToken","cookies","session_token","sessionError","session","token","status","json","error","owner","name","params","permError","hasPermission","value","type","isPublic","description","body","undefined","existingError","existing","code","msg","result"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../server/utils/auth/getSession.js';\nimport currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport setSetting from '../../../../../../server/utils/settings/setSetting.js';\nimport getSettingWithMetadata from '../../../../../../server/utils/settings/getSettingWithMetadata.js';\n\nexport default async (request, response) => {\n const sessionToken = request.cookies.session_token;\n const [sessionError, session] = await getSession({ token: sessionToken });\n if(sessionError || !session){\n return response.status(401).json({ error: 'Unauthorized' });\n }\n\n const { owner, name } = request.params;\n\n if(owner === 'system'){\n const [permError, hasPermission] = await currentUserHasPermission(sessionToken, 'system:settings:update');\n if(permError || !hasPermission){\n return response.status(403).json({ error: 'Forbidden: Cannot modify system settings' });\n }\n } else if(owner === 'custom'){\n const [permError, hasPermission] = await currentUserHasPermission(sessionToken, 'system:custom-settings:manage');\n if(permError || !hasPermission){\n return response.status(403).json({ error: 'Forbidden: Cannot manage custom settings' });\n }\n } else {\n const [permError, hasPermission] = await currentUserHasPermission(sessionToken, 'system:extension:configure');\n if(permError || !hasPermission){\n return response.status(403).json({ error: 'Forbidden: Cannot modify extension settings' });\n }\n }\n\n const { value, type, isPublic, description } = request.body;\n\n if(value === undefined){\n return response.status(400).json({ error: 'Value is required' });\n }\n\n /*\n System and extension settings: only value can change, metadata is preserved\n */\n\n if(owner !== 'custom'){\n const [existingError, existing] = await getSettingWithMetadata(owner, name);\n if(existingError){\n return response.status(existingError.code).json({ error: existingError.msg });\n }\n const [error, result] = await setSetting(owner, name, value, existing.type, existing.isPublic, existing.description);\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n return response.json(result);\n }\n\n const [error, result] = await setSetting(owner, name, value, type, isPublic, description);\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n response.json(result);\n};\n"],"mappings":"OAAOA,eAAgB,2DAChBC,6BAA8B,gFAC9BC,eAAgB,+DAChBC,2BAA4B,mFAEpBC,MAAOC,EAASC,KAC7B,MAAMC,EAAeF,EAAQG,QAAQC,eAC9BC,EAAcC,SAAiBX,WAAW,CAAEY,MAAOL,IAC1D,GAAGG,IAAiBC,EAClB,OAAOL,EAASO,OAAO,KAAKC,KAAK,CAAEC,MAAO,iBAG5C,MAAMC,MAAEA,EAAKC,KAAEA,GAASZ,EAAQa,OAEhC,GAAa,WAAVF,EAAmB,CACpB,MAAOG,EAAWC,SAAuBnB,yBAAyBM,EAAc,0BAChF,GAAGY,IAAcC,EACf,OAAOd,EAASO,OAAO,KAAKC,KAAK,CAAEC,MAAO,4CAE9C,MAAO,GAAa,WAAVC,EAAmB,CAC3B,MAAOG,EAAWC,SAAuBnB,yBAAyBM,EAAc,iCAChF,GAAGY,IAAcC,EACf,OAAOd,EAASO,OAAO,KAAKC,KAAK,CAAEC,MAAO,4CAE9C,KAAO,CACL,MAAOI,EAAWC,SAAuBnB,yBAAyBM,EAAc,8BAChF,GAAGY,IAAcC,EACf,OAAOd,EAASO,OAAO,KAAKC,KAAK,CAAEC,MAAO,+CAE9C,CAEA,MAAMM,MAAEA,EAAKC,KAAEA,EAAIC,SAAEA,EAAQC,YAAEA,GAAgBnB,EAAQoB,KAEvD,QAAaC,IAAVL,EACD,OAAOf,EAASO,OAAO,KAAKC,KAAK,CAAEC,MAAO,sBAO5C,GAAa,WAAVC,EAAmB,CACpB,MAAOW,EAAeC,SAAkBzB,uBAAuBa,EAAOC,GACtE,GAAGU,EACD,OAAOrB,EAASO,OAAOc,EAAcE,MAAMf,KAAK,CAAEC,MAAOY,EAAcG,MAEzE,MAAOf,EAAOgB,SAAgB7B,WAAWc,EAAOC,EAAMI,EAAOO,EAASN,KAAMM,EAASL,SAAUK,EAASJ,aACxG,OAAGT,EACMT,EAASO,OAAOE,EAAMc,MAAMf,KAAK,CAAEC,MAAOA,EAAMe,MAElDxB,EAASQ,KAAKiB,EACvB,CAEA,MAAOhB,EAAOgB,SAAgB7B,WAAWc,EAAOC,EAAMI,EAAOC,EAAMC,EAAUC,GAE7E,GAAGT,EACD,OAAOT,EAASO,OAAOE,EAAMc,MAAMf,KAAK,CAAEC,MAAOA,EAAMe,MAGzDxB,EAASQ,KAAKiB","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import getPublicSettings from"../../../../../server/utils/settings/getPublicSettings.js";export default async e=>{const[t,s]=await getPublicSettings();return t?new Response(JSON.stringify({error:t.msg}),{status:t.code,headers:{"Content-Type":"application/json"}}):new Response(JSON.stringify(s),{headers:{"Content-Type":"application/json"}})};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/settings/public/GET.js","names":["getPublicSettings","async","request","error","settings","Response","JSON","stringify","msg","status","code","headers"],"sources":["0"],"sourcesContent":["import getPublicSettings from '../../../../../server/utils/settings/getPublicSettings.js';\n\nexport default async (request) => {\n const [error, settings] = await getPublicSettings();\n\n if(error){\n return new Response(JSON.stringify({ error: error.msg }), {\n status: error.code,\n headers: { 'Content-Type': 'application/json' }\n });\n }\n\n return new Response(JSON.stringify(settings), {\n headers: { 'Content-Type': 'application/json' }\n });\n};\n"],"mappings":"OAAOA,sBAAuB,2EAEfC,MAAOC,IACpB,MAAOC,EAAOC,SAAkBJ,oBAEhC,OAAGG,EACM,IAAIE,SAASC,KAAKC,UAAU,CAAEJ,MAAOA,EAAMK,MAAQ,CACxDC,OAAQN,EAAMO,KACdC,QAAS,CAAE,eAAgB,sBAIxB,IAAIN,SAASC,KAAKC,UAAUH,GAAW,CAC5CO,QAAS,CAAE,eAAgB","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import deleteTemplate from"../../../../server/utils/templates/deleteTemplate.js";const rootDir=resolve(import.meta.dirname,"../../../../app-public");export default async(e,s)=>{const r=e.cookies.session_token,[t,o]=await currentUserHasPermission(r,"system:pages:delete");if(t)return s.status(t.code).json({error:t.msg});if(!o)return s.status(403).json({error:"Insufficient permissions"});const{files:i}=e.body;if(!i?.length)return s.status(400).json({error:"No files specified"});const[n,a]=await deleteTemplate({rootDir:rootDir,files:i});if(n)return s.status(n.code).json({error:n.msg});s.json(a)};
|
|
2
|
+
//# sourceMappingURL=DELETE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/templates/DELETE.js","names":["resolve","currentUserHasPermission","deleteTemplate","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","files","body","length","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport deleteTemplate from '../../../../server/utils/templates/deleteTemplate.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:delete');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { files } = request.body;\n\n\tif(!files?.length){\n\t\treturn response.status(400).json({ error: 'No files specified' });\n\t}\n\n\tconst [error, data] = await deleteTemplate({ rootDir, files });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,0EAC9BC,mBAAoB,uDAE3B,MAAMC,QAAUH,oBAAoBI,QAAS,yCAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,MAAEA,GAAUZ,EAAQa,KAE1B,IAAID,GAAOE,OACV,OAAOb,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,uBAG3C,MAAOA,EAAOK,SAAcnB,eAAe,CAAEC,gBAASe,UAEtD,GAAGF,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKM","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import listTemplates from"../../../../server/utils/pages/listTemplates.js";const rootDir=resolve(import.meta.dirname,"../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[t,o]=await currentUserHasPermission(e,"system:pages:read");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const[i,n]=await listTemplates({rootDir:rootDir});if(i)return r.status(i.code).json({error:i.msg});r.json(n)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/templates/GET.js","names":["resolve","currentUserHasPermission","listTemplates","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport listTemplates from '../../../../server/utils/pages/listTemplates.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:read');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst [error, data] = await listTemplates({ rootDir });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,0EAC9BC,kBAAmB,kDAE1B,MAAMC,QAAUH,oBAAoBI,QAAS,yCAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,qBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAOA,EAAOE,SAAchB,cAAc,CAAEC,kBAE5C,GAAGa,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKG","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import getSession from"../../../../server/utils/auth/getSession.js";import createTemplate from"../../../../server/utils/templates/createTemplate.js";const rootDir=resolve(import.meta.dirname,"../../../../app-public");export default async(e,r)=>{const s=e.cookies.session_token,[t,o]=await currentUserHasPermission(s,"system:pages:create");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const{directory:i,name:a,copyFrom:n}=e.body;if(!a)return r.status(400).json({error:"Template name is required"});const[,m]=await getSession({token:s}),u=m?.user?.name||"",[c,p]=await createTemplate({rootDir:rootDir,directory:i,name:a,author:u,copyFrom:n});if(c)return r.status(c.code).json({error:c.msg});r.status(201).json(p)};
|
|
2
|
+
//# sourceMappingURL=POST.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/templates/POST.js","names":["resolve","currentUserHasPermission","getSession","createTemplate","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","directory","name","copyFrom","body","sessionData","author","user","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getSession from '../../../../server/utils/auth/getSession.js';\nimport createTemplate from '../../../../server/utils/templates/createTemplate.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:create');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { directory, name, copyFrom } = request.body;\n\n\tif(!name){\n\t\treturn response.status(400).json({ error: 'Template name is required' });\n\t}\n\n\tconst [, sessionData] = await getSession({ token });\n\tconst author = sessionData?.user?.name || '';\n\n\tconst [error, data] = await createTemplate({ rootDir, directory, name, author, copyFrom });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.status(201).json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,0EAC9BC,eAAgB,qDAChBC,mBAAoB,uDAE3B,MAAMC,QAAUJ,oBAAoBK,QAAS,yCAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBZ,yBAAyBQ,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,UAAEA,EAASC,KAAEA,EAAIC,SAAEA,GAAad,EAAQe,KAE9C,IAAIF,EACH,OAAOZ,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,8BAG3C,MAAO,CAAEM,SAAqBrB,WAAW,CAAEO,UACrCe,EAASD,GAAaE,MAAML,MAAQ,IAEnCH,EAAOS,SAAcvB,eAAe,CAAEC,gBAASe,YAAWC,OAAMI,SAAQH,aAE/E,GAAGJ,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASM,OAAO,KAAKE,KAAKU","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import disableTemplate from"../../../../../server/utils/templates/disableTemplate.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(s,r)=>{const e=s.cookies.session_token,[t,o]=await currentUserHasPermission(e,"system:pages:update");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const{file:i}=s.body||{};if(!i)return r.status(400).json({error:"File path is required"});const[a,n]=await disableTemplate({rootDir:rootDir,file:i});if(a)return r.status(a.code).json({error:a.msg});r.json(n)};
|
|
2
|
+
//# sourceMappingURL=PUT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/templates/disable/PUT.js","names":["resolve","currentUserHasPermission","disableTemplate","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","file","body","result"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport disableTemplate from '../../../../../server/utils/templates/disableTemplate.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { file } = request.body || {};\n\n\tif(!file){\n\t\treturn response.status(400).json({ error: 'File path is required' });\n\t}\n\n\tconst [error, result] = await disableTemplate({ rootDir, file });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(result);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,oBAAqB,2DAE5B,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,GAASZ,EAAQa,MAAQ,CAAC,EAElC,IAAID,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,0BAG3C,MAAOA,EAAOI,SAAgBlB,gBAAgB,CAAEC,gBAASe,SAEzD,GAAGF,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKK","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import enableTemplate from"../../../../../server/utils/templates/enableTemplate.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(e,r)=>{const s=e.cookies.session_token,[t,o]=await currentUserHasPermission(s,"system:pages:update");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const{file:i}=e.body||{};if(!i)return r.status(400).json({error:"File path is required"});const[n,a]=await enableTemplate({rootDir:rootDir,file:i});if(n)return r.status(n.code).json({error:n.msg});r.json(a)};
|
|
2
|
+
//# sourceMappingURL=PUT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/templates/enable/PUT.js","names":["resolve","currentUserHasPermission","enableTemplate","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","file","body","result"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport enableTemplate from '../../../../../server/utils/templates/enableTemplate.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { file } = request.body || {};\n\n\tif(!file){\n\t\treturn response.status(400).json({ error: 'File path is required' });\n\t}\n\n\tconst [error, result] = await enableTemplate({ rootDir, file });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(result);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,mBAAoB,0DAE3B,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,GAASZ,EAAQa,MAAQ,CAAC,EAElC,IAAID,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,0BAG3C,MAAOA,EAAOI,SAAgBlB,eAAe,CAAEC,gBAASe,SAExD,GAAGF,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKK","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import getTemplate from"../../../../../server/utils/templates/getTemplate.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(r,e)=>{const s=r.cookies.session_token,[t,o]=await currentUserHasPermission(s,"system:pages:read");if(t)return e.status(t.code).json({error:t.msg});if(!o)return e.status(403).json({error:"Insufficient permissions"});const{file:i}=r.query;if(!i)return e.status(400).json({error:"File path is required"});const[n,a]=await getTemplate({rootDir:rootDir,file:i});if(n)return e.status(n.code).json({error:n.msg});e.json(a)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/templates/file/GET.js","names":["resolve","currentUserHasPermission","getTemplate","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","file","query","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getTemplate from '../../../../../server/utils/templates/getTemplate.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:read');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { file } = request.query;\n\n\tif(!file){\n\t\treturn response.status(400).json({ error: 'File path is required' });\n\t}\n\n\tconst [error, data] = await getTemplate({ rootDir, file });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,gBAAiB,uDAExB,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,qBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,GAASZ,EAAQa,MAEzB,IAAID,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,0BAG3C,MAAOA,EAAOI,SAAclB,YAAY,CAAEC,gBAASe,SAEnD,GAAGF,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKK","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import moveTemplate from"../../../../../server/utils/templates/moveTemplate.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(e,r)=>{const s=e.cookies.session_token,[t,o]=await currentUserHasPermission(s,"system:pages:update");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const{file:i,newFile:n}=e.body;if(!i)return r.status(400).json({error:"File path is required"});if(!n)return r.status(400).json({error:"New file path is required"});const[a,m]=await moveTemplate({rootDir:rootDir,file:i,newFile:n});if(a)return r.status(a.code).json({error:a.msg});r.json(m)};
|
|
2
|
+
//# sourceMappingURL=PATCH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/templates/file/PATCH.js","names":["resolve","currentUserHasPermission","moveTemplate","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","file","newFile","body","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport moveTemplate from '../../../../../server/utils/templates/moveTemplate.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { file, newFile } = request.body;\n\n\tif(!file){\n\t\treturn response.status(400).json({ error: 'File path is required' });\n\t}\n\n\tif(!newFile){\n\t\treturn response.status(400).json({ error: 'New file path is required' });\n\t}\n\n\tconst [error, data] = await moveTemplate({ rootDir, file, newFile });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,iBAAkB,wDAEzB,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,EAAIC,QAAEA,GAAYb,EAAQc,KAElC,IAAIF,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,0BAG3C,IAAIG,EACH,OAAOZ,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,8BAG3C,MAAOA,EAAOK,SAAcnB,aAAa,CAAEC,gBAASe,OAAMC,YAE1D,GAAGH,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKM","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import updateTemplate from"../../../../../server/utils/templates/updateTemplate.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(r,e)=>{const s=r.cookies.session_token,[t,o]=await currentUserHasPermission(s,"system:pages:update");if(t)return e.status(t.code).json({error:t.msg});if(!o)return e.status(403).json({error:"Insufficient permissions"});const{file:i,name:a,author:n,markup:m}=r.body;if(!i)return e.status(400).json({error:"File path is required"});const[u,p]=await updateTemplate({rootDir:rootDir,file:i,name:a,author:n,markup:m});if(u)return e.status(u.code).json({error:u.msg});e.json(p)};
|
|
2
|
+
//# sourceMappingURL=PUT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/templates/file/PUT.js","names":["resolve","currentUserHasPermission","updateTemplate","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","file","name","author","markup","body","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport updateTemplate from '../../../../../server/utils/templates/updateTemplate.js';\n\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\n\nexport default async (request, response) => {\n\tconst token = request.cookies.session_token;\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:update');\n\n\tif(permError){\n\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t}\n\n\tif(!hasPermission){\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t}\n\n\tconst { file, name, author, markup } = request.body;\n\n\tif(!file){\n\t\treturn response.status(400).json({ error: 'File path is required' });\n\t}\n\n\tconst [error, data] = await updateTemplate({ rootDir, file, name, author, markup });\n\n\tif(error){\n\t\treturn response.status(error.code).json({ error: error.msg });\n\t}\n\n\tresponse.json(data);\n};\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,mBAAoB,0DAE3B,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,uBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,KAAEA,EAAIC,KAAEA,EAAIC,OAAEA,EAAMC,OAAEA,GAAWf,EAAQgB,KAE/C,IAAIJ,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,0BAG3C,MAAOA,EAAOO,SAAcrB,eAAe,CAAEC,gBAASe,OAAMC,OAAMC,SAAQC,WAE1E,GAAGL,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASQ,KAAKQ","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import deleteUser from"../../../../server/utils/users/deleteUser.js";export default async(s,r)=>{try{const e=s.cookies.session_token,{ids:t}=s.body;if(!t||!Array.isArray(t)||0===t.length)return r.status(400).json({error:"IDs array is required"});const[o,n]=await currentUserHasPermission(e,"system:user:delete");if(o)return r.status(o.code).json({error:o.msg});if(!n)return r.status(403).json({error:"Insufficient permissions"});const i=[],u=[];for(const s of t){const[r,e]=await deleteUser(s);r?u.push({id:s,error:r.msg}):i.push(e)}if(u.length>0)return r.status(207).json({deleted:i,errors:u});r.json({deleted:i})}catch(s){r.status(500).json({error:s.message})}};
|
|
2
|
+
//# sourceMappingURL=DELETE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/user/DELETE.js","names":["currentUserHasPermission","deleteUser","async","request","response","token","cookies","session_token","ids","body","Array","isArray","length","status","json","error","permError","hasPermission","code","msg","results","errors","id","result","push","deleted","message"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport deleteUser from '../../../../server/utils/users/deleteUser.js';\n\nexport default async (request, response) => {\n try {\n const token = request.cookies.session_token;\n const { ids } = request.body;\n\n if(!ids || !Array.isArray(ids) || ids.length === 0){\n return response.status(400).json({ error: 'IDs array is required' });\n }\n\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:delete');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'Insufficient permissions' });\n }\n\n const results = [];\n const errors = [];\n\n for(const id of ids){\n const [error, result] = await deleteUser(id);\n\n if(error){\n errors.push({ id, error: error.msg });\n } else {\n results.push(result);\n }\n }\n\n if(errors.length > 0){\n return response.status(207).json({ deleted: results, errors });\n }\n\n response.json({ deleted: results });\n } catch(error) {\n response.status(500).json({ error: error.message });\n }\n};\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,eAAgB,8DAERC,MAAOC,EAASC,KAC7B,IACE,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,IAAEA,GAAQL,EAAQM,KAExB,IAAID,IAAQE,MAAMC,QAAQH,IAAuB,IAAfA,EAAII,OACpC,OAAOR,EAASS,OAAO,KAAKC,KAAK,CAAEC,MAAO,0BAG5C,MAAOC,EAAWC,SAAuBjB,yBAAyBK,EAAO,sBAEzE,GAAGW,EACD,OAAOZ,EAASS,OAAOG,EAAUE,MAAMJ,KAAK,CAAEC,MAAOC,EAAUG,MAGjE,IAAIF,EACF,OAAOb,EAASS,OAAO,KAAKC,KAAK,CAAEC,MAAO,6BAG5C,MAAMK,EAAU,GACVC,EAAS,GAEf,IAAI,MAAMC,KAAMd,EAAI,CAClB,MAAOO,EAAOQ,SAAgBtB,WAAWqB,GAEtCP,EACDM,EAAOG,KAAK,CAAEF,KAAIP,MAAOA,EAAMI,MAE/BC,EAAQI,KAAKD,EAEjB,CAEA,GAAGF,EAAOT,OAAS,EACjB,OAAOR,EAASS,OAAO,KAAKC,KAAK,CAAEW,QAASL,EAASC,WAGvDjB,EAASU,KAAK,CAAEW,QAASL,GAC3B,CAAE,MAAML,GACNX,EAASS,OAAO,KAAKC,KAAK,CAAEC,MAAOA,EAAMW,SAC3C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import getUsers from"../../../../server/utils/users/getUsers.js";export default async(s,r)=>{const e=s.cookies.session_token,[t,o]=await currentUserHasPermission(e,"system:user:read");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"You do not have permission to view users"});const i=parseInt(s.query.limit)||50,n=parseInt(s.query.offset)||0,[u,a]=await getUsers({limit:i,offset:n});if(u)return r.status(u.code).json({error:u.msg});r.json(a)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/user/GET.js","names":["currentUserHasPermission","getUsers","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","limit","parseInt","query","offset","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getUsers from '../../../../server/utils/users/getUsers.js';\n\nexport default async (request, response) => {\n const token = request.cookies.session_token;\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:read');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'You do not have permission to view users' });\n }\n\n const limit = parseInt(request.query.limit) || 50;\n const offset = parseInt(request.query.offset) || 0;\n const [error, data] = await getUsers({ limit, offset });\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n response.json(data);\n};\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,aAAc,4DAENC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,oBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6CAG5C,MAAME,EAAQC,SAASb,EAAQc,MAAMF,QAAU,GACzCG,EAASF,SAASb,EAAQc,MAAMC,SAAW,GAC1CL,EAAOM,SAAclB,SAAS,CAAEc,QAAOG,WAE9C,GAAGL,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKO","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import updateUser from"../../../../server/utils/users/updateUser.js";export default async(e,s)=>{const r=e.cookies.session_token,{id:i,name:t,email:o,emailVerified:n,createdAt:a}=e.body;if(!i)return s.status(400).json({error:"User ID is required"});const[u,d]=await currentUserHasPermission(r,"system:user:update");if(u)return s.status(u.code).json({error:u.msg});if(!d)return s.status(403).json({error:"Insufficient permissions"});const m={};void 0!==t&&(m.name=t),void 0!==o&&(m.email=o),void 0!==n&&(m.emailVerified=n),void 0!==a&&(m.createdAt=new Date(a));const[c,f]=await updateUser(i,m);if(c)return s.status(c.code).json({error:c.msg});s.json(f)};
|
|
2
|
+
//# sourceMappingURL=PATCH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src/kempo/api/user/PATCH.js","names":["currentUserHasPermission","updateUser","async","request","response","token","cookies","session_token","id","name","email","emailVerified","createdAt","body","status","json","error","permError","hasPermission","code","msg","updates","undefined","Date","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\nimport updateUser from '../../../../server/utils/users/updateUser.js';\n\nexport default async (request, response) => {\n const token = request.cookies.session_token;\n const { id, name, email, emailVerified, createdAt } = request.body;\n \n if(!id){\n return response.status(400).json({ error: 'User ID is required' });\n }\n\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:update');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'Insufficient permissions' });\n }\n \n const updates = {};\n if(name !== undefined) updates.name = name;\n if(email !== undefined) updates.email = email;\n if(emailVerified !== undefined) updates.emailVerified = emailVerified;\n if(createdAt !== undefined) updates.createdAt = new Date(createdAt);\n \n const [error, result] = await updateUser(id, updates);\n \n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n \n response.json(result);\n};\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,eAAgB,8DAERC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,GAAEA,EAAEC,KAAEA,EAAIC,MAAEA,EAAKC,cAAEA,EAAaC,UAAEA,GAAcT,EAAQU,KAE9D,IAAIL,EACF,OAAOJ,EAASU,OAAO,KAAKC,KAAK,CAAEC,MAAO,wBAG5C,MAAOC,EAAWC,SAAuBlB,yBAAyBK,EAAO,sBAEzE,GAAGY,EACD,OAAOb,EAASU,OAAOG,EAAUE,MAAMJ,KAAK,CAAEC,MAAOC,EAAUG,MAGjE,IAAIF,EACF,OAAOd,EAASU,OAAO,KAAKC,KAAK,CAAEC,MAAO,6BAG5C,MAAMK,EAAU,CAAC,OACLC,IAATb,IAAoBY,EAAQZ,KAAOA,QACzBa,IAAVZ,IAAqBW,EAAQX,MAAQA,QACnBY,IAAlBX,IAA6BU,EAAQV,cAAgBA,QACvCW,IAAdV,IAAyBS,EAAQT,UAAY,IAAIW,KAAKX,IAEzD,MAAOI,EAAOQ,SAAgBvB,WAAWO,EAAIa,GAE7C,GAAGL,EACD,OAAOZ,EAASU,OAAOE,EAAMG,MAAMJ,KAAK,CAAEC,MAAOA,EAAMI,MAGzDhB,EAASW,KAAKS","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import getUserById from"../../../../../server/utils/users/getUserById.js";export default async(s,r)=>{const e=s.cookies.session_token,[t,o]=await currentUserHasPermission(e,"system:user:read");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const{userid:i}=s.params,[n,u]=await getUserById(i);if(n)return r.status(n.code).json({error:n.msg});r.json(u)};
|
|
2
|
+
//# sourceMappingURL=GET.js.map
|