kempo 4.2.4 → 4.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (856) hide show
  1. package/LICENSE.md +60 -0
  2. package/README.md +427 -0
  3. package/app-drizzle.config.js +14 -0
  4. package/app-public/.config.json +25 -0
  5. package/app-public/account/index.page.html +110 -0
  6. package/app-public/account/split2.template.html +36 -0
  7. package/app-public/default.template.html +24 -0
  8. package/app-public/forgot-password/index.page.html +79 -0
  9. package/app-public/index.page.html +16 -0
  10. package/app-public/init.js +2 -0
  11. package/app-public/kempo-global.global-disabled.html +0 -0
  12. package/app-public/kempo-global.global.html +6 -0
  13. package/app-public/login/index.page.html +51 -0
  14. package/app-public/manifest.json +87 -0
  15. package/app-public/media/hexagon.svg +22 -0
  16. package/app-public/media/icon-maskable.png +0 -0
  17. package/app-public/media/icon.svg +1 -0
  18. package/app-public/media/icon128.png +0 -0
  19. package/app-public/media/icon144.png +0 -0
  20. package/app-public/media/icon152.png +0 -0
  21. package/app-public/media/icon16-48.svg +19 -0
  22. package/app-public/media/icon16.png +0 -0
  23. package/app-public/media/icon192.png +0 -0
  24. package/app-public/media/icon256.png +0 -0
  25. package/app-public/media/icon32.png +0 -0
  26. package/app-public/media/icon384.png +0 -0
  27. package/app-public/media/icon48.png +0 -0
  28. package/app-public/media/icon512.png +0 -0
  29. package/app-public/media/icon64.png +0 -0
  30. package/app-public/media/icon72.png +0 -0
  31. package/app-public/media/icon96.png +0 -0
  32. package/app-public/media/kempo-fist.svg +21 -0
  33. package/app-public/media/nsx.jpg +0 -0
  34. package/app-public/nav.fragment.html +41 -0
  35. package/app-public/new-page.page.html +17 -0
  36. package/app-public/register/index.page.html +60 -0
  37. package/app-public/reset-password/[token]/index.html +123 -0
  38. package/app-public/reset-password/[token]/index.page.html +75 -0
  39. package/app-public/styles.css +1 -0
  40. package/app-public/test.page.html +20 -0
  41. package/app-public/verify-email/[token]/index.html +107 -0
  42. package/app-public/verify-email/[token]/index.page.html +59 -0
  43. package/app-public/verify-email/index.page.html +21 -0
  44. package/app-server/db/schema.js +19 -0
  45. package/bin/cli.js +468 -0
  46. package/dist/admin/accounts/groups/[name]/index.page.html +286 -0
  47. package/dist/admin/accounts/groups/index.page.html +171 -0
  48. package/dist/admin/accounts/permissions/index.page.html +193 -0
  49. package/dist/admin/accounts/users/[id]/index.page.html +314 -0
  50. package/dist/admin/accounts/users/index.page.html +160 -0
  51. package/dist/admin/components/AddGroupControl.js +6 -0
  52. package/dist/admin/components/AddGroupControl.js.map +1 -0
  53. package/dist/admin/components/ClearExpiredSessionsControl.js +6 -0
  54. package/dist/admin/components/ClearExpiredSessionsControl.js.map +1 -0
  55. package/dist/admin/components/FragmentEditor.js +101 -0
  56. package/dist/admin/components/FragmentEditor.js.map +1 -0
  57. package/dist/admin/components/GlobalContentEditor.js +85 -0
  58. package/dist/admin/components/GlobalContentEditor.js.map +1 -0
  59. package/dist/admin/components/GroupDeleteSelected.js +6 -0
  60. package/dist/admin/components/GroupDeleteSelected.js.map +1 -0
  61. package/dist/admin/components/GroupRemoveRecord.js +6 -0
  62. package/dist/admin/components/GroupRemoveRecord.js.map +1 -0
  63. package/dist/admin/components/Monaco.js +2 -0
  64. package/dist/admin/components/Monaco.js.map +1 -0
  65. package/dist/admin/components/PageEditor.js +138 -0
  66. package/dist/admin/components/PageEditor.js.map +1 -0
  67. package/dist/admin/components/TableRowDelete.js +4 -0
  68. package/dist/admin/components/TableRowDelete.js.map +1 -0
  69. package/dist/admin/components/TableRowLink.js +8 -0
  70. package/dist/admin/components/TableRowLink.js.map +1 -0
  71. package/dist/admin/components/TemplateEditor.js +125 -0
  72. package/dist/admin/components/TemplateEditor.js.map +1 -0
  73. package/dist/admin/components/ValueEditor.js +40 -0
  74. package/dist/admin/components/ValueEditor.js.map +1 -0
  75. package/dist/admin/components/tableControls/AddMember.js +6 -0
  76. package/dist/admin/components/tableControls/AddMember.js.map +1 -0
  77. package/dist/admin/components/tableControls/AddPermission.js +6 -0
  78. package/dist/admin/components/tableControls/AddPermission.js.map +1 -0
  79. package/dist/admin/components/tableControls/InstallExtension.js +6 -0
  80. package/dist/admin/components/tableControls/InstallExtension.js.map +1 -0
  81. package/dist/admin/components/tableControls/UninstallExtension.js +6 -0
  82. package/dist/admin/components/tableControls/UninstallExtension.js.map +1 -0
  83. package/dist/admin/content/fragments/edit/index.page.html +4 -0
  84. package/dist/admin/content/fragments/index.page.html +169 -0
  85. package/dist/admin/content/globals/edit/index.page.html +4 -0
  86. package/dist/admin/content/globals/index.page.html +152 -0
  87. package/dist/admin/content/pages/edit/index.page.html +4 -0
  88. package/dist/admin/content/pages/index.page.html +218 -0
  89. package/dist/admin/content/templates/edit/index.page.html +4 -0
  90. package/dist/admin/content/templates/index.page.html +193 -0
  91. package/dist/admin/default.template.html +9 -0
  92. package/dist/admin/extensions/index.page.html +32 -0
  93. package/dist/admin/icons/article.svg +1 -0
  94. package/dist/admin/icons/browse.svg +1 -0
  95. package/dist/admin/icons/cards_stack.svg +1 -0
  96. package/dist/admin/icons/content.svg +1 -0
  97. package/dist/admin/icons/docs.svg +1 -0
  98. package/dist/admin/icons/drive_file_move.svg +1 -0
  99. package/dist/admin/icons/extension.svg +1 -0
  100. package/dist/admin/icons/globe.svg +1 -0
  101. package/dist/admin/icons/group.svg +1 -0
  102. package/dist/admin/icons/lock.svg +1 -0
  103. package/dist/admin/icons/lock_add.svg +1 -0
  104. package/dist/admin/icons/manage-accounts.svg +1 -0
  105. package/dist/admin/icons/person.svg +1 -0
  106. package/dist/admin/icons/person_add.svg +1 -0
  107. package/dist/admin/icons/preview.svg +1 -0
  108. package/dist/admin/icons/save.svg +1 -0
  109. package/dist/admin/icons/segment.svg +1 -0
  110. package/dist/admin/icons/timer_off.svg +1 -0
  111. package/dist/admin/icons/web.svg +1 -0
  112. package/dist/admin/index.page.html +4 -0
  113. package/dist/admin/init.js +2 -0
  114. package/dist/admin/init.js.map +1 -0
  115. package/dist/admin/known-extensions.json +1 -0
  116. package/dist/admin/nav.fragment.html +20 -0
  117. package/dist/admin/settings/[owner]/[name]/index.page.html +260 -0
  118. package/dist/admin/settings/index.page.html +203 -0
  119. package/dist/kempo/api/admin-globals/DELETE.js +2 -0
  120. package/dist/kempo/api/admin-globals/DELETE.js.map +1 -0
  121. package/dist/kempo/api/admin-globals/GET.js +2 -0
  122. package/dist/kempo/api/admin-globals/GET.js.map +1 -0
  123. package/dist/kempo/api/admin-globals/POST.js +2 -0
  124. package/dist/kempo/api/admin-globals/POST.js.map +1 -0
  125. package/dist/kempo/api/admin-globals/[id]/GET.js +2 -0
  126. package/dist/kempo/api/admin-globals/[id]/GET.js.map +1 -0
  127. package/dist/kempo/api/admin-globals/[id]/PUT.js +2 -0
  128. package/dist/kempo/api/admin-globals/[id]/PUT.js.map +1 -0
  129. package/dist/kempo/api/admin-globals/[id]/disable/PUT.js +2 -0
  130. package/dist/kempo/api/admin-globals/[id]/disable/PUT.js.map +1 -0
  131. package/dist/kempo/api/admin-globals/[id]/enable/PUT.js +2 -0
  132. package/dist/kempo/api/admin-globals/[id]/enable/PUT.js.map +1 -0
  133. package/dist/kempo/api/auth/change-password/POST.js +2 -0
  134. package/dist/kempo/api/auth/change-password/POST.js.map +1 -0
  135. package/dist/kempo/api/auth/login/email/POST.js +2 -0
  136. package/dist/kempo/api/auth/login/email/POST.js.map +1 -0
  137. package/dist/kempo/api/auth/logout/POST.js +2 -0
  138. package/dist/kempo/api/auth/logout/POST.js.map +1 -0
  139. package/dist/kempo/api/auth/register/email/POST.js +2 -0
  140. package/dist/kempo/api/auth/register/email/POST.js.map +1 -0
  141. package/dist/kempo/api/auth/reset-password/POST.js +2 -0
  142. package/dist/kempo/api/auth/reset-password/POST.js.map +1 -0
  143. package/dist/kempo/api/auth/session/GET.js +2 -0
  144. package/dist/kempo/api/auth/session/GET.js.map +1 -0
  145. package/dist/kempo/api/auth/verify-email/POST.js +2 -0
  146. package/dist/kempo/api/auth/verify-email/POST.js.map +1 -0
  147. package/dist/kempo/api/extensions/DELETE.js +2 -0
  148. package/dist/kempo/api/extensions/DELETE.js.map +1 -0
  149. package/dist/kempo/api/extensions/GET.js +2 -0
  150. package/dist/kempo/api/extensions/GET.js.map +1 -0
  151. package/dist/kempo/api/extensions/POST.js +2 -0
  152. package/dist/kempo/api/extensions/POST.js.map +1 -0
  153. package/dist/kempo/api/extensions/[name]/disable/POST.js +2 -0
  154. package/dist/kempo/api/extensions/[name]/disable/POST.js.map +1 -0
  155. package/dist/kempo/api/extensions/[name]/enable/POST.js +2 -0
  156. package/dist/kempo/api/extensions/[name]/enable/POST.js.map +1 -0
  157. package/dist/kempo/api/extensions/[name]/update/POST.js +2 -0
  158. package/dist/kempo/api/extensions/[name]/update/POST.js.map +1 -0
  159. package/dist/kempo/api/extensions/[name]/update-check/GET.js +2 -0
  160. package/dist/kempo/api/extensions/[name]/update-check/GET.js.map +1 -0
  161. package/dist/kempo/api/extensions/available/GET.js +2 -0
  162. package/dist/kempo/api/extensions/available/GET.js.map +1 -0
  163. package/dist/kempo/api/extensions/known/GET.js +2 -0
  164. package/dist/kempo/api/extensions/known/GET.js.map +1 -0
  165. package/dist/kempo/api/forgot-password/POST.js +2 -0
  166. package/dist/kempo/api/forgot-password/POST.js.map +1 -0
  167. package/dist/kempo/api/fragments/DELETE.js +2 -0
  168. package/dist/kempo/api/fragments/DELETE.js.map +1 -0
  169. package/dist/kempo/api/fragments/GET.js +2 -0
  170. package/dist/kempo/api/fragments/GET.js.map +1 -0
  171. package/dist/kempo/api/fragments/POST.js +2 -0
  172. package/dist/kempo/api/fragments/POST.js.map +1 -0
  173. package/dist/kempo/api/fragments/disable/PUT.js +2 -0
  174. package/dist/kempo/api/fragments/disable/PUT.js.map +1 -0
  175. package/dist/kempo/api/fragments/enable/PUT.js +2 -0
  176. package/dist/kempo/api/fragments/enable/PUT.js.map +1 -0
  177. package/dist/kempo/api/fragments/file/GET.js +2 -0
  178. package/dist/kempo/api/fragments/file/GET.js.map +1 -0
  179. package/dist/kempo/api/fragments/file/PATCH.js +2 -0
  180. package/dist/kempo/api/fragments/file/PATCH.js.map +1 -0
  181. package/dist/kempo/api/fragments/file/PUT.js +2 -0
  182. package/dist/kempo/api/fragments/file/PUT.js.map +1 -0
  183. package/dist/kempo/api/globals/DELETE.js +2 -0
  184. package/dist/kempo/api/globals/DELETE.js.map +1 -0
  185. package/dist/kempo/api/globals/GET.js +2 -0
  186. package/dist/kempo/api/globals/GET.js.map +1 -0
  187. package/dist/kempo/api/globals/POST.js +2 -0
  188. package/dist/kempo/api/globals/POST.js.map +1 -0
  189. package/dist/kempo/api/globals/disable/PUT.js +2 -0
  190. package/dist/kempo/api/globals/disable/PUT.js.map +1 -0
  191. package/dist/kempo/api/globals/enable/PUT.js +2 -0
  192. package/dist/kempo/api/globals/enable/PUT.js.map +1 -0
  193. package/dist/kempo/api/globals/entry/GET.js +2 -0
  194. package/dist/kempo/api/globals/entry/GET.js.map +1 -0
  195. package/dist/kempo/api/globals/entry/PUT.js +2 -0
  196. package/dist/kempo/api/globals/entry/PUT.js.map +1 -0
  197. package/dist/kempo/api/groups/DELETE.js +2 -0
  198. package/dist/kempo/api/groups/DELETE.js.map +1 -0
  199. package/dist/kempo/api/groups/GET.js +2 -0
  200. package/dist/kempo/api/groups/GET.js.map +1 -0
  201. package/dist/kempo/api/groups/PATCH.js +2 -0
  202. package/dist/kempo/api/groups/PATCH.js.map +1 -0
  203. package/dist/kempo/api/groups/POST.js +2 -0
  204. package/dist/kempo/api/groups/POST.js.map +1 -0
  205. package/dist/kempo/api/groups/[name]/GET.js +2 -0
  206. package/dist/kempo/api/groups/[name]/GET.js.map +1 -0
  207. package/dist/kempo/api/groups/[name]/members/DELETE.js +2 -0
  208. package/dist/kempo/api/groups/[name]/members/DELETE.js.map +1 -0
  209. package/dist/kempo/api/groups/[name]/members/GET.js +2 -0
  210. package/dist/kempo/api/groups/[name]/members/GET.js.map +1 -0
  211. package/dist/kempo/api/groups/[name]/members/POST.js +2 -0
  212. package/dist/kempo/api/groups/[name]/members/POST.js.map +1 -0
  213. package/dist/kempo/api/groups/[name]/permissions/DELETE.js +2 -0
  214. package/dist/kempo/api/groups/[name]/permissions/DELETE.js.map +1 -0
  215. package/dist/kempo/api/groups/[name]/permissions/GET.js +2 -0
  216. package/dist/kempo/api/groups/[name]/permissions/GET.js.map +1 -0
  217. package/dist/kempo/api/groups/[name]/permissions/POST.js +2 -0
  218. package/dist/kempo/api/groups/[name]/permissions/POST.js.map +1 -0
  219. package/dist/kempo/api/pages/DELETE.js +2 -0
  220. package/dist/kempo/api/pages/DELETE.js.map +1 -0
  221. package/dist/kempo/api/pages/GET.js +2 -0
  222. package/dist/kempo/api/pages/GET.js.map +1 -0
  223. package/dist/kempo/api/pages/POST.js +2 -0
  224. package/dist/kempo/api/pages/POST.js.map +1 -0
  225. package/dist/kempo/api/pages/directories/GET.js +2 -0
  226. package/dist/kempo/api/pages/directories/GET.js.map +1 -0
  227. package/dist/kempo/api/pages/disable/PUT.js +2 -0
  228. package/dist/kempo/api/pages/disable/PUT.js.map +1 -0
  229. package/dist/kempo/api/pages/enable/PUT.js +2 -0
  230. package/dist/kempo/api/pages/enable/PUT.js.map +1 -0
  231. package/dist/kempo/api/pages/file/GET.js +2 -0
  232. package/dist/kempo/api/pages/file/GET.js.map +1 -0
  233. package/dist/kempo/api/pages/file/PATCH.js +2 -0
  234. package/dist/kempo/api/pages/file/PATCH.js.map +1 -0
  235. package/dist/kempo/api/pages/file/PUT.js +2 -0
  236. package/dist/kempo/api/pages/file/PUT.js.map +1 -0
  237. package/dist/kempo/api/pages/templates/GET.js +2 -0
  238. package/dist/kempo/api/pages/templates/GET.js.map +1 -0
  239. package/dist/kempo/api/permissions/DELETE.js +2 -0
  240. package/dist/kempo/api/permissions/DELETE.js.map +1 -0
  241. package/dist/kempo/api/permissions/GET.js +2 -0
  242. package/dist/kempo/api/permissions/GET.js.map +1 -0
  243. package/dist/kempo/api/permissions/PATCH.js +2 -0
  244. package/dist/kempo/api/permissions/PATCH.js.map +1 -0
  245. package/dist/kempo/api/permissions/POST.js +2 -0
  246. package/dist/kempo/api/permissions/POST.js.map +1 -0
  247. package/dist/kempo/api/settings/[owner]/GET.js +2 -0
  248. package/dist/kempo/api/settings/[owner]/GET.js.map +1 -0
  249. package/dist/kempo/api/settings/[owner]/[name]/DELETE.js +2 -0
  250. package/dist/kempo/api/settings/[owner]/[name]/DELETE.js.map +1 -0
  251. package/dist/kempo/api/settings/[owner]/[name]/GET.js +2 -0
  252. package/dist/kempo/api/settings/[owner]/[name]/GET.js.map +1 -0
  253. package/dist/kempo/api/settings/[owner]/[name]/POST.js +2 -0
  254. package/dist/kempo/api/settings/[owner]/[name]/POST.js.map +1 -0
  255. package/dist/kempo/api/settings/public/GET.js +2 -0
  256. package/dist/kempo/api/settings/public/GET.js.map +1 -0
  257. package/dist/kempo/api/templates/DELETE.js +2 -0
  258. package/dist/kempo/api/templates/DELETE.js.map +1 -0
  259. package/dist/kempo/api/templates/GET.js +2 -0
  260. package/dist/kempo/api/templates/GET.js.map +1 -0
  261. package/dist/kempo/api/templates/POST.js +2 -0
  262. package/dist/kempo/api/templates/POST.js.map +1 -0
  263. package/dist/kempo/api/templates/disable/PUT.js +2 -0
  264. package/dist/kempo/api/templates/disable/PUT.js.map +1 -0
  265. package/dist/kempo/api/templates/enable/PUT.js +2 -0
  266. package/dist/kempo/api/templates/enable/PUT.js.map +1 -0
  267. package/dist/kempo/api/templates/file/GET.js +2 -0
  268. package/dist/kempo/api/templates/file/GET.js.map +1 -0
  269. package/dist/kempo/api/templates/file/PATCH.js +2 -0
  270. package/dist/kempo/api/templates/file/PATCH.js.map +1 -0
  271. package/dist/kempo/api/templates/file/PUT.js +2 -0
  272. package/dist/kempo/api/templates/file/PUT.js.map +1 -0
  273. package/dist/kempo/api/user/DELETE.js +2 -0
  274. package/dist/kempo/api/user/DELETE.js.map +1 -0
  275. package/dist/kempo/api/user/GET.js +2 -0
  276. package/dist/kempo/api/user/GET.js.map +1 -0
  277. package/dist/kempo/api/user/PATCH.js +2 -0
  278. package/dist/kempo/api/user/PATCH.js.map +1 -0
  279. package/dist/kempo/api/user/[userid]/GET.js +2 -0
  280. package/dist/kempo/api/user/[userid]/GET.js.map +1 -0
  281. package/dist/kempo/api/user/[userid]/groups/DELETE.js +2 -0
  282. package/dist/kempo/api/user/[userid]/groups/DELETE.js.map +1 -0
  283. package/dist/kempo/api/user/[userid]/groups/GET.js +2 -0
  284. package/dist/kempo/api/user/[userid]/groups/GET.js.map +1 -0
  285. package/dist/kempo/api/user/[userid]/groups/POST.js +2 -0
  286. package/dist/kempo/api/user/[userid]/groups/POST.js.map +1 -0
  287. package/dist/kempo/api/user/[userid]/permissions/GET.js +2 -0
  288. package/dist/kempo/api/user/[userid]/permissions/GET.js.map +1 -0
  289. package/dist/kempo/api/user/[userid]/permissions/all/GET.js +2 -0
  290. package/dist/kempo/api/user/[userid]/permissions/all/GET.js.map +1 -0
  291. package/dist/kempo/api/user/[userid]/permissions/list/GET.js +2 -0
  292. package/dist/kempo/api/user/[userid]/permissions/list/GET.js.map +1 -0
  293. package/dist/kempo/api/user/[userid]/permissions/some/GET.js +2 -0
  294. package/dist/kempo/api/user/[userid]/permissions/some/GET.js.map +1 -0
  295. package/dist/kempo/api/user/[userid]/sessions/DELETE.js +2 -0
  296. package/dist/kempo/api/user/[userid]/sessions/DELETE.js.map +1 -0
  297. package/dist/kempo/api/user/[userid]/sessions/GET.js +2 -0
  298. package/dist/kempo/api/user/[userid]/sessions/GET.js.map +1 -0
  299. package/dist/kempo/api/user/[userid]/sessions/expired/DELETE.js +2 -0
  300. package/dist/kempo/api/user/[userid]/sessions/expired/DELETE.js.map +1 -0
  301. package/dist/kempo/api/user/create/POST.js +2 -0
  302. package/dist/kempo/api/user/create/POST.js.map +1 -0
  303. package/dist/kempo/api/user/search/GET.js +2 -0
  304. package/dist/kempo/api/user/search/GET.js.map +1 -0
  305. package/dist/kempo/components/LogoutBtn.js +2 -0
  306. package/dist/kempo/components/LogoutBtn.js.map +1 -0
  307. package/dist/kempo/components/Menu.js +17 -0
  308. package/dist/kempo/components/Menu.js.map +1 -0
  309. package/dist/kempo/components/Permission.js +2 -0
  310. package/dist/kempo/components/Permission.js.map +1 -0
  311. package/dist/kempo/components/Role.js +2 -0
  312. package/dist/kempo/components/Role.js.map +1 -0
  313. package/dist/kempo/components/UserCreatedAt.js +2 -0
  314. package/dist/kempo/components/UserCreatedAt.js.map +1 -0
  315. package/dist/kempo/components/UserEmail.js +2 -0
  316. package/dist/kempo/components/UserEmail.js.map +1 -0
  317. package/dist/kempo/components/UserEmailVerified.js +2 -0
  318. package/dist/kempo/components/UserEmailVerified.js.map +1 -0
  319. package/dist/kempo/components/UserName.js +2 -0
  320. package/dist/kempo/components/UserName.js.map +1 -0
  321. package/dist/kempo/fetch.js +2 -0
  322. package/dist/kempo/fetch.js.map +1 -0
  323. package/dist/kempo/icons/format_indent_decrease.svg +1 -0
  324. package/dist/kempo/icons/format_indent_increase.svg +1 -0
  325. package/dist/kempo/icons/format_quote.svg +1 -0
  326. package/dist/kempo/icons/redo.svg +1 -0
  327. package/dist/kempo/icons/restart_alt.svg +1 -0
  328. package/dist/kempo/icons/subscript.svg +1 -0
  329. package/dist/kempo/icons/superscript.svg +1 -0
  330. package/dist/kempo/icons/undo.svg +1 -0
  331. package/dist/kempo/sdk.js +2 -0
  332. package/dist/kempo/sdk.js.map +1 -0
  333. package/middleware/extension-scope-router.js +255 -0
  334. package/middleware/kempo-auth.js +26 -0
  335. package/package.json +46 -19
  336. package/scripts/init-db.js +211 -0
  337. package/server/db/index.js +24 -0
  338. package/server/db/schema.js +173 -0
  339. package/server/sdk.js +192 -0
  340. package/server/utils/admin-global-content/createAdminGlobalContent.js +43 -0
  341. package/server/utils/admin-global-content/deleteAdminGlobalContent.js +34 -0
  342. package/server/utils/admin-global-content/deleteAdminGlobalContentByOwner.js +26 -0
  343. package/server/utils/admin-global-content/disableAdminGlobalContent.js +33 -0
  344. package/server/utils/admin-global-content/enableAdminGlobalContent.js +33 -0
  345. package/server/utils/admin-global-content/getAdminGlobalContent.js +28 -0
  346. package/server/utils/admin-global-content/helpers.js +47 -0
  347. package/server/utils/admin-global-content/listAdminGlobalContent.js +20 -0
  348. package/server/utils/admin-global-content/updateAdminGlobalContent.js +41 -0
  349. package/server/utils/auth/changePassword.js +27 -0
  350. package/server/utils/auth/getSession.js +35 -0
  351. package/server/utils/auth/loginEmail.js +66 -0
  352. package/server/utils/auth/logout.js +16 -0
  353. package/server/utils/auth/registerEmail.js +105 -0
  354. package/server/utils/auth/requestPasswordReset.js +62 -0
  355. package/server/utils/auth/resetPassword.js +58 -0
  356. package/server/utils/auth/sendVerificationEmail.js +57 -0
  357. package/server/utils/auth/verifyEmail.js +46 -0
  358. package/server/utils/email/sendEmail.js +42 -0
  359. package/server/utils/email/sendEmailFromTemplate.js +45 -0
  360. package/server/utils/extensions/checkExtensionUpdate.js +56 -0
  361. package/server/utils/extensions/createTablesFromSchema.js +57 -0
  362. package/server/utils/extensions/disableExtension.js +26 -0
  363. package/server/utils/extensions/enableExtension.js +26 -0
  364. package/server/utils/extensions/getExtension.js +34 -0
  365. package/server/utils/extensions/installExtension.js +134 -0
  366. package/server/utils/extensions/listExtensions.js +36 -0
  367. package/server/utils/extensions/scopeCache.js +18 -0
  368. package/server/utils/extensions/uninstallExtension.js +88 -0
  369. package/server/utils/extensions/updateExtension.js +159 -0
  370. package/server/utils/fragments/createFragment.js +57 -0
  371. package/server/utils/fragments/deleteFragment.js +35 -0
  372. package/server/utils/fragments/disableFragment.js +37 -0
  373. package/server/utils/fragments/enableFragment.js +30 -0
  374. package/server/utils/fragments/getFragment.js +36 -0
  375. package/server/utils/fragments/listFragments.js +32 -0
  376. package/server/utils/fragments/moveFragment.js +54 -0
  377. package/server/utils/fragments/updateFragment.js +58 -0
  378. package/server/utils/fs/parseFrontmatter.js +13 -0
  379. package/server/utils/fs/scanDir.js +26 -0
  380. package/server/utils/global-content/createGlobalContent.js +58 -0
  381. package/server/utils/global-content/deleteGlobalContent.js +52 -0
  382. package/server/utils/global-content/disableGlobalContent.js +57 -0
  383. package/server/utils/global-content/enableGlobalContent.js +53 -0
  384. package/server/utils/global-content/getGlobalContent.js +28 -0
  385. package/server/utils/global-content/helpers.js +33 -0
  386. package/server/utils/global-content/listGlobalContent.js +24 -0
  387. package/server/utils/global-content/updateGlobalContent.js +56 -0
  388. package/server/utils/groups/addUserToGroup.js +46 -0
  389. package/server/utils/groups/createGroup.js +32 -0
  390. package/server/utils/groups/deleteGroup.js +29 -0
  391. package/server/utils/groups/getGroup.js +25 -0
  392. package/server/utils/groups/getGroupMembers.js +33 -0
  393. package/server/utils/groups/listGroups.js +21 -0
  394. package/server/utils/groups/removeUserFromGroup.js +31 -0
  395. package/server/utils/groups/updateGroup.js +54 -0
  396. package/server/utils/hooks/createHook.js +29 -0
  397. package/server/utils/hooks/deleteHook.js +19 -0
  398. package/server/utils/hooks/getHook.js +19 -0
  399. package/server/utils/hooks/listHooks.js +30 -0
  400. package/server/utils/hooks/triggerHook.js +61 -0
  401. package/server/utils/hooks/updateHook.js +27 -0
  402. package/server/utils/pages/createPage.js +60 -0
  403. package/server/utils/pages/deletePage.js +35 -0
  404. package/server/utils/pages/disablePage.js +37 -0
  405. package/server/utils/pages/enablePage.js +30 -0
  406. package/server/utils/pages/getPage.js +53 -0
  407. package/server/utils/pages/listDirectories.js +18 -0
  408. package/server/utils/pages/listPages.js +40 -0
  409. package/server/utils/pages/listTemplates.js +52 -0
  410. package/server/utils/pages/movePage.js +54 -0
  411. package/server/utils/pages/updatePage.js +74 -0
  412. package/server/utils/permissions/addPermissionToGroup.js +43 -0
  413. package/server/utils/permissions/createPermission.js +43 -0
  414. package/server/utils/permissions/currentUserHasAllPermissions.js +24 -0
  415. package/server/utils/permissions/currentUserHasPermission.js +24 -0
  416. package/server/utils/permissions/currentUserHasSomePermissions.js +24 -0
  417. package/server/utils/permissions/deletePermission.js +29 -0
  418. package/server/utils/permissions/getAllPermissions.js +21 -0
  419. package/server/utils/permissions/getPermissionsForGroups.js +26 -0
  420. package/server/utils/permissions/getUserGroups.js +31 -0
  421. package/server/utils/permissions/getUserPermission.js +30 -0
  422. package/server/utils/permissions/getUserPermissions.js +16 -0
  423. package/server/utils/permissions/removePermissionFromGroup.js +31 -0
  424. package/server/utils/permissions/updatePermission.js +33 -0
  425. package/server/utils/permissions/userHasAllPermissions.js +31 -0
  426. package/server/utils/permissions/userHasPermission.js +13 -0
  427. package/server/utils/permissions/userHasSomePermissions.js +31 -0
  428. package/server/utils/sessions/createSession.js +36 -0
  429. package/server/utils/sessions/deleteExpiredUserSessions.js +22 -0
  430. package/server/utils/sessions/deleteSession.js +16 -0
  431. package/server/utils/sessions/deleteUserSessions.js +16 -0
  432. package/server/utils/sessions/getSessionById.js +21 -0
  433. package/server/utils/sessions/getSessionByToken.js +21 -0
  434. package/server/utils/sessions/getSessions.js +19 -0
  435. package/server/utils/sessions/getUserSessions.js +30 -0
  436. package/server/utils/settings/deleteSetting.js +24 -0
  437. package/server/utils/settings/getPublicSettings.js +22 -0
  438. package/server/utils/settings/getSetting.js +25 -0
  439. package/server/utils/settings/getSettingWithMetadata.js +33 -0
  440. package/server/utils/settings/getSettingsByOwner.js +23 -0
  441. package/server/utils/settings/helpers.js +29 -0
  442. package/server/utils/settings/listSettings.js +25 -0
  443. package/server/utils/settings/setSetting.js +49 -0
  444. package/server/utils/templates/createTemplate.js +71 -0
  445. package/server/utils/templates/deleteTemplate.js +35 -0
  446. package/server/utils/templates/disableTemplate.js +37 -0
  447. package/server/utils/templates/enableTemplate.js +30 -0
  448. package/server/utils/templates/getTemplate.js +30 -0
  449. package/server/utils/templates/moveTemplate.js +54 -0
  450. package/server/utils/templates/updateTemplate.js +46 -0
  451. package/server/utils/users/createUser.js +60 -0
  452. package/server/utils/users/deleteUser.js +19 -0
  453. package/server/utils/users/findUsersByEmail.js +35 -0
  454. package/server/utils/users/findUsersByName.js +35 -0
  455. package/server/utils/users/getUserByEmail.js +26 -0
  456. package/server/utils/users/getUserById.js +27 -0
  457. package/server/utils/users/getUsers.js +26 -0
  458. package/server/utils/users/searchUsers.js +53 -0
  459. package/server/utils/users/updateUser.js +38 -0
  460. package/.gitattributes +0 -2
  461. package/LICENSE +0 -21
  462. package/dist/components/Accordion.js +0 -1
  463. package/dist/components/Card.js +0 -1
  464. package/dist/components/Collapsible.js +0 -1
  465. package/dist/components/Component.js +0 -1
  466. package/dist/components/ContentSlider.js +0 -1
  467. package/dist/components/Dialog.js +0 -1
  468. package/dist/components/DirectoryViewer.js +0 -1
  469. package/dist/components/FocusCapture.js +0 -1
  470. package/dist/components/Icon.js +0 -1
  471. package/dist/components/Import.js +0 -1
  472. package/dist/components/LazyComponent.js +0 -1
  473. package/dist/components/PersistantCollapsible.js +0 -1
  474. package/dist/components/PhotoViewer.js +0 -1
  475. package/dist/components/ReactiveComponent.js +0 -1
  476. package/dist/components/ReactiveLazyComponent.js +0 -1
  477. package/dist/components/Resize.js +0 -1
  478. package/dist/components/Search.js +0 -1
  479. package/dist/components/ShowMore.js +0 -1
  480. package/dist/components/SideMenu.js +0 -1
  481. package/dist/components/Sortable.js +0 -1
  482. package/dist/components/Split.js +0 -1
  483. package/dist/components/Stacks.js +0 -1
  484. package/dist/components/Table.js +0 -1
  485. package/dist/components/Tabs.js +0 -1
  486. package/dist/components/Tags.js +0 -1
  487. package/dist/components/ThemeSwitcher.js +0 -1
  488. package/dist/components/Timestamp.js +0 -1
  489. package/dist/components/Toast.js +0 -1
  490. package/dist/components/Toggle.js +0 -1
  491. package/dist/components/tableControls/DeleteRecord.js +0 -1
  492. package/dist/components/tableControls/DeleteSelected.js +0 -1
  493. package/dist/components/tableControls/Edit.js +0 -1
  494. package/dist/components/tableControls/ExportCSV.js +0 -1
  495. package/dist/components/tableControls/ExportJson.js +0 -1
  496. package/dist/components/tableControls/FieldSortHide.js +0 -1
  497. package/dist/components/tableControls/Filters.js +0 -1
  498. package/dist/components/tableControls/FirstPage.js +0 -1
  499. package/dist/components/tableControls/HiddenCount.js +0 -1
  500. package/dist/components/tableControls/Hide.js +0 -1
  501. package/dist/components/tableControls/LastPage.js +0 -1
  502. package/dist/components/tableControls/NextPage.js +0 -1
  503. package/dist/components/tableControls/PageSelect.js +0 -1
  504. package/dist/components/tableControls/PageSize.js +0 -1
  505. package/dist/components/tableControls/PrevPage.js +0 -1
  506. package/dist/components/tableControls/Search.js +0 -1
  507. package/dist/components/tableControls/SelectCount.js +0 -1
  508. package/dist/components/tableControls/ShowAll.js +0 -1
  509. package/dist/components/tableControls/ShowHideFields.js +0 -1
  510. package/dist/components/tableControls/TableControl.js +0 -1
  511. package/dist/kempo-hljs.css +0 -1
  512. package/dist/kempo-styles.css +0 -1
  513. package/dist/kempo-vars.css +0 -1
  514. package/dist/utils/Server.js +0 -1
  515. package/dist/utils/cli.js +0 -1
  516. package/dist/utils/cookie.js +0 -1
  517. package/dist/utils/debounce.js +0 -1
  518. package/dist/utils/drag.js +0 -1
  519. package/dist/utils/element.js +0 -1
  520. package/dist/utils/files.js +0 -1
  521. package/dist/utils/formatTimestamp.js +0 -1
  522. package/dist/utils/fs-utils.js +0 -1
  523. package/dist/utils/fuzzyMatch.js +0 -1
  524. package/dist/utils/getPreferredTheme.js +0 -1
  525. package/dist/utils/loadCss.js +0 -1
  526. package/dist/utils/loadScript.js +0 -1
  527. package/dist/utils/minify.js +0 -1
  528. package/dist/utils/object.js +0 -1
  529. package/dist/utils/raf.js +0 -1
  530. package/dist/utils/string.js +0 -1
  531. package/dist/utils/toFunction.js +0 -1
  532. package/dist/utils/type.js +0 -1
  533. package/dist/utils/waitFrames.js +0 -1
  534. package/dist/utils/watchDirectoryHandle.js +0 -1
  535. package/dist/utils/watchWindowSize.js +0 -1
  536. package/docs/components/_template.html +0 -77
  537. package/docs/components/accordion.html +0 -124
  538. package/docs/components/card.html +0 -93
  539. package/docs/components/component.html +0 -92
  540. package/docs/components/content-slider.html +0 -195
  541. package/docs/components/dialog.html +0 -247
  542. package/docs/components/directory-viewer.html +0 -92
  543. package/docs/components/focus-capture.html +0 -70
  544. package/docs/components/icon.html +0 -160
  545. package/docs/components/import.html +0 -79
  546. package/docs/components/lazy-component.html +0 -86
  547. package/docs/components/reactive-component.html +0 -71
  548. package/docs/components/reactive-lazy-component.html +0 -71
  549. package/docs/components/resize.html +0 -154
  550. package/docs/components/search.html +0 -104
  551. package/docs/components/show-more.html +0 -125
  552. package/docs/components/side-menu.html +0 -148
  553. package/docs/components/sortable.html +0 -98
  554. package/docs/components/split.html +0 -128
  555. package/docs/components/table.html +0 -314
  556. package/docs/components/tableControls.html +0 -79
  557. package/docs/components/tableCustomFields.html +0 -115
  558. package/docs/components/tableFetchRecords.html +0 -116
  559. package/docs/components/tableFieldSortHide.html +0 -77
  560. package/docs/components/tablePagination.html +0 -102
  561. package/docs/components/tableRecordEditing.html +0 -146
  562. package/docs/components/tableRecordFiltering.html +0 -77
  563. package/docs/components/tableRecordHiding.html +0 -82
  564. package/docs/components/tableRecordSearching.html +0 -77
  565. package/docs/components/tableRecordSelection.html +0 -77
  566. package/docs/components/tableRowControls.html +0 -80
  567. package/docs/components/tableSorting.html +0 -75
  568. package/docs/components/tabs.html +0 -165
  569. package/docs/components/tags.html +0 -96
  570. package/docs/components/theme-switcher.html +0 -76
  571. package/docs/components/timestamp.html +0 -88
  572. package/docs/components/toast.html +0 -330
  573. package/docs/components/toggle.html +0 -157
  574. package/docs/icons/add.svg +0 -1
  575. package/docs/icons/arrow-back.svg +0 -1
  576. package/docs/icons/arrow-down-double.svg +0 -1
  577. package/docs/icons/arrow-down.svg +0 -1
  578. package/docs/icons/arrow-forward.svg +0 -1
  579. package/docs/icons/arrow-up-double.svg +0 -1
  580. package/docs/icons/arrow-up.svg +0 -1
  581. package/docs/icons/cards.svg +0 -1
  582. package/docs/icons/check.svg +0 -1
  583. package/docs/icons/chevron-left.svg +0 -1
  584. package/docs/icons/chevron-right.svg +0 -1
  585. package/docs/icons/close.svg +0 -2
  586. package/docs/icons/compare.svg +0 -1
  587. package/docs/icons/delete.svg +0 -1
  588. package/docs/icons/drag-handle.svg +0 -1
  589. package/docs/icons/drawing2.svg +0 -124
  590. package/docs/icons/edit.svg +0 -1
  591. package/docs/icons/error.svg +0 -1
  592. package/docs/icons/export-file.svg +0 -1
  593. package/docs/icons/file-text.svg +0 -1
  594. package/docs/icons/file.svg +0 -1
  595. package/docs/icons/filter-off.svg +0 -1
  596. package/docs/icons/filter.svg +0 -1
  597. package/docs/icons/first.svg +0 -1
  598. package/docs/icons/folder-clear.svg +0 -1
  599. package/docs/icons/folder-create.svg +0 -1
  600. package/docs/icons/folder-open.svg +0 -1
  601. package/docs/icons/folder.svg +0 -1
  602. package/docs/icons/hide.svg +0 -1
  603. package/docs/icons/image.svg +0 -1
  604. package/docs/icons/label-add.svg +0 -1
  605. package/docs/icons/label.svg +0 -1
  606. package/docs/icons/last.svg +0 -1
  607. package/docs/icons/menu.svg +0 -1
  608. package/docs/icons/mode-auto.svg +0 -1
  609. package/docs/icons/mode-dark.svg +0 -1
  610. package/docs/icons/mode-light.svg +0 -1
  611. package/docs/icons/open-in-browser.svg +0 -1
  612. package/docs/icons/pause.svg +0 -1
  613. package/docs/icons/play.svg +0 -1
  614. package/docs/icons/refresh.svg +0 -1
  615. package/docs/icons/remove.svg +0 -1
  616. package/docs/icons/save.svg +0 -1
  617. package/docs/icons/search.svg +0 -1
  618. package/docs/icons/settings.svg +0 -1
  619. package/docs/icons/storage.svg +0 -1
  620. package/docs/icons/table-visibility.svg +0 -1
  621. package/docs/icons/tag.svg +0 -1
  622. package/docs/icons/tools.svg +0 -1
  623. package/docs/icons/trash-x.svg +0 -1
  624. package/docs/icons/warning.svg +0 -1
  625. package/docs/index.html +0 -21
  626. package/docs/js/nav.inc.js +0 -4
  627. package/docs/kempo/components/Accordion.js +0 -1
  628. package/docs/kempo/components/Card.js +0 -1
  629. package/docs/kempo/components/Collapsible.js +0 -1
  630. package/docs/kempo/components/Component.js +0 -1
  631. package/docs/kempo/components/ContentSlider.js +0 -1
  632. package/docs/kempo/components/Dialog.js +0 -1
  633. package/docs/kempo/components/DirectoryViewer.js +0 -1
  634. package/docs/kempo/components/FocusCapture.js +0 -1
  635. package/docs/kempo/components/Icon.js +0 -1
  636. package/docs/kempo/components/Import.js +0 -1
  637. package/docs/kempo/components/LazyComponent.js +0 -1
  638. package/docs/kempo/components/PersistantCollapsible.js +0 -1
  639. package/docs/kempo/components/PhotoViewer.js +0 -1
  640. package/docs/kempo/components/ReactiveComponent.js +0 -1
  641. package/docs/kempo/components/ReactiveLazyComponent.js +0 -1
  642. package/docs/kempo/components/Resize.js +0 -1
  643. package/docs/kempo/components/Search.js +0 -1
  644. package/docs/kempo/components/ShowMore.js +0 -1
  645. package/docs/kempo/components/SideMenu.js +0 -1
  646. package/docs/kempo/components/Sortable.js +0 -1
  647. package/docs/kempo/components/Split.js +0 -1
  648. package/docs/kempo/components/Stacks.js +0 -1
  649. package/docs/kempo/components/Table.js +0 -1
  650. package/docs/kempo/components/Tabs.js +0 -1
  651. package/docs/kempo/components/Tags.js +0 -1
  652. package/docs/kempo/components/ThemeSwitcher.js +0 -1
  653. package/docs/kempo/components/Timestamp.js +0 -1
  654. package/docs/kempo/components/Toast.js +0 -1
  655. package/docs/kempo/components/Toggle.js +0 -1
  656. package/docs/kempo/components/tableControls/DeleteRecord.js +0 -1
  657. package/docs/kempo/components/tableControls/DeleteSelected.js +0 -1
  658. package/docs/kempo/components/tableControls/Edit.js +0 -1
  659. package/docs/kempo/components/tableControls/ExportCSV.js +0 -1
  660. package/docs/kempo/components/tableControls/ExportJson.js +0 -1
  661. package/docs/kempo/components/tableControls/FieldSortHide.js +0 -1
  662. package/docs/kempo/components/tableControls/Filters.js +0 -1
  663. package/docs/kempo/components/tableControls/FirstPage.js +0 -1
  664. package/docs/kempo/components/tableControls/HiddenCount.js +0 -1
  665. package/docs/kempo/components/tableControls/Hide.js +0 -1
  666. package/docs/kempo/components/tableControls/LastPage.js +0 -1
  667. package/docs/kempo/components/tableControls/NextPage.js +0 -1
  668. package/docs/kempo/components/tableControls/PageSelect.js +0 -1
  669. package/docs/kempo/components/tableControls/PageSize.js +0 -1
  670. package/docs/kempo/components/tableControls/PrevPage.js +0 -1
  671. package/docs/kempo/components/tableControls/Search.js +0 -1
  672. package/docs/kempo/components/tableControls/SelectCount.js +0 -1
  673. package/docs/kempo/components/tableControls/ShowAll.js +0 -1
  674. package/docs/kempo/components/tableControls/ShowHideFields.js +0 -1
  675. package/docs/kempo/components/tableControls/TableControl.js +0 -1
  676. package/docs/kempo/index.js +0 -1
  677. package/docs/kempo/kempo-hljs.css +0 -1
  678. package/docs/kempo/kempo-styles.css +0 -1
  679. package/docs/kempo/kempo-vars.css +0 -1
  680. package/docs/kempo/utils/Server.js +0 -1
  681. package/docs/kempo/utils/cli.js +0 -1
  682. package/docs/kempo/utils/cookie.js +0 -1
  683. package/docs/kempo/utils/debounce.js +0 -1
  684. package/docs/kempo/utils/drag.js +0 -1
  685. package/docs/kempo/utils/element.js +0 -1
  686. package/docs/kempo/utils/files.js +0 -1
  687. package/docs/kempo/utils/formatTimestamp.js +0 -1
  688. package/docs/kempo/utils/fs-utils.js +0 -1
  689. package/docs/kempo/utils/fuzzyMatch.js +0 -1
  690. package/docs/kempo/utils/getPreferredTheme.js +0 -1
  691. package/docs/kempo/utils/loadCss.js +0 -1
  692. package/docs/kempo/utils/loadScript.js +0 -1
  693. package/docs/kempo/utils/minify.js +0 -1
  694. package/docs/kempo/utils/object.js +0 -1
  695. package/docs/kempo/utils/raf.js +0 -1
  696. package/docs/kempo/utils/string.js +0 -1
  697. package/docs/kempo/utils/toFunction.js +0 -1
  698. package/docs/kempo/utils/type.js +0 -1
  699. package/docs/kempo/utils/waitFrames.js +0 -1
  700. package/docs/kempo/utils/watchDirectoryHandle.js +0 -1
  701. package/docs/kempo/utils/watchWindowSize.js +0 -1
  702. package/docs/nav.inc.html +0 -74
  703. package/docs/search.json +0 -400
  704. package/docs/styles/_template.html +0 -26
  705. package/docs/styles/borders-spacing.html +0 -197
  706. package/docs/styles/buttons.html +0 -117
  707. package/docs/styles/colors.html +0 -69
  708. package/docs/styles/displays-layouts.html +0 -162
  709. package/docs/styles/embed-1.html +0 -40
  710. package/docs/styles/inputs.html +0 -93
  711. package/docs/styles/tables.html +0 -147
  712. package/docs/styles/typography.html +0 -120
  713. package/docs/utils/Server.html +0 -119
  714. package/docs/utils/_template.html +0 -77
  715. package/docs/utils/cli.html +0 -86
  716. package/docs/utils/cookie.html +0 -89
  717. package/docs/utils/debounce.html +0 -63
  718. package/docs/utils/drag.html +0 -87
  719. package/docs/utils/element.html +0 -126
  720. package/docs/utils/format-timestamp.html +0 -66
  721. package/docs/utils/fuzzy-match.html +0 -60
  722. package/icons/add.svg +0 -1
  723. package/icons/arrow-back.svg +0 -1
  724. package/icons/arrow-down-double.svg +0 -1
  725. package/icons/arrow-down.svg +0 -1
  726. package/icons/arrow-forward.svg +0 -1
  727. package/icons/arrow-up-double.svg +0 -1
  728. package/icons/arrow-up.svg +0 -1
  729. package/icons/cards.svg +0 -1
  730. package/icons/check.svg +0 -1
  731. package/icons/chevron-left.svg +0 -1
  732. package/icons/chevron-right.svg +0 -1
  733. package/icons/close.svg +0 -2
  734. package/icons/compare.svg +0 -1
  735. package/icons/delete.svg +0 -1
  736. package/icons/drag-handle.svg +0 -1
  737. package/icons/drawing2.svg +0 -124
  738. package/icons/edit.svg +0 -1
  739. package/icons/error.svg +0 -1
  740. package/icons/export-file.svg +0 -1
  741. package/icons/file-text.svg +0 -1
  742. package/icons/file.svg +0 -1
  743. package/icons/filter-off.svg +0 -1
  744. package/icons/filter.svg +0 -1
  745. package/icons/first.svg +0 -1
  746. package/icons/folder-clear.svg +0 -1
  747. package/icons/folder-create.svg +0 -1
  748. package/icons/folder-open.svg +0 -1
  749. package/icons/folder.svg +0 -1
  750. package/icons/hide.svg +0 -1
  751. package/icons/image.svg +0 -1
  752. package/icons/label-add.svg +0 -1
  753. package/icons/label.svg +0 -1
  754. package/icons/last.svg +0 -1
  755. package/icons/menu.svg +0 -1
  756. package/icons/mode-auto.svg +0 -1
  757. package/icons/mode-dark.svg +0 -1
  758. package/icons/mode-light.svg +0 -1
  759. package/icons/open-in-browser.svg +0 -1
  760. package/icons/pause.svg +0 -1
  761. package/icons/play.svg +0 -1
  762. package/icons/refresh.svg +0 -1
  763. package/icons/remove.svg +0 -1
  764. package/icons/save.svg +0 -1
  765. package/icons/search.svg +0 -1
  766. package/icons/settings.svg +0 -1
  767. package/icons/show.svg +0 -1
  768. package/icons/storage.svg +0 -1
  769. package/icons/table-visibility.svg +0 -1
  770. package/icons/tag.svg +0 -1
  771. package/icons/tools.svg +0 -1
  772. package/icons/trash-x.svg +0 -1
  773. package/icons/warning.svg +0 -1
  774. package/scripts/build.js +0 -154
  775. package/scripts/docs.js +0 -47
  776. package/src/components/Accordion.js +0 -182
  777. package/src/components/Card.js +0 -62
  778. package/src/components/Collapsible.js +0 -104
  779. package/src/components/Component.js +0 -110
  780. package/src/components/ContentSlider.js +0 -192
  781. package/src/components/Dialog.js +0 -338
  782. package/src/components/DirectoryViewer.js +0 -363
  783. package/src/components/FocusCapture.js +0 -31
  784. package/src/components/Icon.js +0 -119
  785. package/src/components/Import.js +0 -48
  786. package/src/components/LazyComponent.js +0 -65
  787. package/src/components/PersistantCollapsible.js +0 -44
  788. package/src/components/PhotoViewer.js +0 -358
  789. package/src/components/ReactiveComponent.js +0 -11
  790. package/src/components/ReactiveLazyComponent.js +0 -11
  791. package/src/components/Resize.js +0 -168
  792. package/src/components/Search.js +0 -140
  793. package/src/components/ShowMore.js +0 -102
  794. package/src/components/SideMenu.js +0 -150
  795. package/src/components/Sortable.js +0 -169
  796. package/src/components/Split.js +0 -164
  797. package/src/components/Table.js +0 -935
  798. package/src/components/Tabs.js +0 -349
  799. package/src/components/Tags.js +0 -224
  800. package/src/components/ThemeSwitcher.js +0 -100
  801. package/src/components/Timestamp.js +0 -28
  802. package/src/components/Toast.js +0 -424
  803. package/src/components/Toggle.js +0 -137
  804. package/src/components/tableControls/DeleteRecord.js +0 -43
  805. package/src/components/tableControls/DeleteSelected.js +0 -70
  806. package/src/components/tableControls/Edit.js +0 -84
  807. package/src/components/tableControls/ExportCSV.js +0 -91
  808. package/src/components/tableControls/ExportJson.js +0 -62
  809. package/src/components/tableControls/FieldSortHide.js +0 -77
  810. package/src/components/tableControls/Filters.js +0 -129
  811. package/src/components/tableControls/FirstPage.js +0 -69
  812. package/src/components/tableControls/HiddenCount.js +0 -37
  813. package/src/components/tableControls/Hide.js +0 -40
  814. package/src/components/tableControls/LastPage.js +0 -67
  815. package/src/components/tableControls/NextPage.js +0 -69
  816. package/src/components/tableControls/PageSelect.js +0 -89
  817. package/src/components/tableControls/PageSize.js +0 -70
  818. package/src/components/tableControls/PrevPage.js +0 -69
  819. package/src/components/tableControls/Search.js +0 -49
  820. package/src/components/tableControls/SelectCount.js +0 -42
  821. package/src/components/tableControls/ShowAll.js +0 -37
  822. package/src/components/tableControls/TableControl.js +0 -51
  823. package/src/kempo-hljs.css +0 -146
  824. package/src/kempo-styles.css +0 -952
  825. package/src/kempo-vars.css +0 -159
  826. package/src/utils/Server.js +0 -189
  827. package/src/utils/cli.js +0 -119
  828. package/src/utils/cookie.js +0 -20
  829. package/src/utils/debounce.js +0 -9
  830. package/src/utils/drag.js +0 -74
  831. package/src/utils/element.js +0 -81
  832. package/src/utils/formatTimestamp.js +0 -27
  833. package/src/utils/fs-utils.js +0 -41
  834. package/src/utils/fuzzyMatch.js +0 -60
  835. package/src/utils/getPreferredTheme.js +0 -1
  836. package/src/utils/loadCss.js +0 -10
  837. package/src/utils/loadScript.js +0 -10
  838. package/src/utils/object.js +0 -198
  839. package/src/utils/raf.js +0 -10
  840. package/src/utils/string.js +0 -66
  841. package/src/utils/toFunction.js +0 -24
  842. package/src/utils/type.js +0 -13
  843. package/src/utils/waitFrames.js +0 -17
  844. package/src/utils/watchDirectoryHandle.js +0 -18
  845. package/src/utils/watchWindowSize.js +0 -15
  846. package/test/components/SuiteList.js +0 -26
  847. package/test/components/Test.js +0 -357
  848. package/test/index.html +0 -49
  849. package/test/index.js +0 -36
  850. package/test/suite.html +0 -45
  851. package/test/suites.inc.html +0 -4
  852. package/test/tests/components/Component.test.js +0 -138
  853. package/test/tests/utils/cli.test.js +0 -113
  854. package/test/tests/utils/cookie.test.js +0 -87
  855. package/test/tests/utils/debounce.test.js +0 -71
  856. /package/{docs/icons/show.svg → dist/admin/icons/visibility.svg} +0 -0
@@ -0,0 +1,2 @@
1
+ import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import getAdminGlobalContent from"../../../../../server/utils/admin-global-content/getAdminGlobalContent.js";const adminDir=resolve(import.meta.dirname,"../../../../../dist/admin");export default async(s,r)=>{const e=s.cookies.session_token,[t,i]=await currentUserHasPermission(e,"system:globals:read");if(t)return r.status(t.code).json({error:t.msg});if(!i)return r.status(403).json({error:"Insufficient permissions"});const n=s.params.id,[o,a]=await getAdminGlobalContent({adminDir:adminDir,id:n});if(o)return r.status(o.code).json({error:o.msg});r.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\admin-globals\\[id]\\GET.js","names":["resolve","currentUserHasPermission","getAdminGlobalContent","adminDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","id","params","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport getAdminGlobalContent from '../../../../../server/utils/admin-global-content/getAdminGlobalContent.js';\r\n\r\nconst adminDir = resolve(import.meta.dirname, '../../../../../dist/admin');\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:globals:read');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const id = request.params.id;\r\n const [error, data] = await getAdminGlobalContent({ adminDir, id });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,0BAA2B,4EAElC,MAAMC,SAAWH,oBAAoBI,QAAS,4CAE/BC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,uBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,EAAKZ,EAAQa,OAAOD,IACnBF,EAAOI,SAAclB,sBAAsB,CAAEC,kBAAUe,OAE9D,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKK","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import updateAdminGlobalContent from"../../../../../server/utils/admin-global-content/updateAdminGlobalContent.js";const adminDir=resolve(import.meta.dirname,"../../../../../dist/admin");export default async(r,s)=>{const o=r.cookies.session_token,[t,e]=await currentUserHasPermission(o,"system:globals:update");if(t)return s.status(t.code).json({error:t.msg});if(!e)return s.status(403).json({error:"Insufficient permissions"});const i=r.params.id,{name:n,location:a,priority:m,markup:d}=r.body,[u,l]=await updateAdminGlobalContent({adminDir:adminDir,id:i,name:n,location:a,priority:m,markup:d});if(u)return s.status(u.code).json({error:u.msg});s.json(l)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\PUT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\admin-globals\\[id]\\PUT.js","names":["resolve","currentUserHasPermission","updateAdminGlobalContent","adminDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","id","params","name","location","priority","markup","body","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport updateAdminGlobalContent from '../../../../../server/utils/admin-global-content/updateAdminGlobalContent.js';\r\n\r\nconst adminDir = resolve(import.meta.dirname, '../../../../../dist/admin');\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:globals:update');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const id = request.params.id;\r\n const { name, location, priority, markup } = request.body;\r\n const [error, data] = await updateAdminGlobalContent({ adminDir, id, name, location, priority, markup });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,6BAA8B,+EAErC,MAAMC,SAAWH,oBAAoBI,QAAS,4CAE/BC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,yBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,EAAKZ,EAAQa,OAAOD,IACpBE,KAAEA,EAAIC,SAAEA,EAAQC,SAAEA,EAAQC,OAAEA,GAAWjB,EAAQkB,MAC9CR,EAAOS,SAAcvB,yBAAyB,CAAEC,kBAAUe,KAAIE,OAAMC,WAAUC,WAAUC,WAE/F,GAAGP,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKU","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{resolve}from"path";import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import disableAdminGlobalContent from"../../../../../../server/utils/admin-global-content/disableAdminGlobalContent.js";const adminDir=resolve(import.meta.dirname,"../../../../../../dist/admin");export default async(s,r)=>{const e=s.cookies.session_token,[i,n]=await currentUserHasPermission(e,"system:globals:update");if(i)return r.status(i.code).json({error:i.msg});if(!n)return r.status(403).json({error:"Insufficient permissions"});const o=s.params.id,[t,a]=await disableAdminGlobalContent({adminDir:adminDir,id:o});if(t)return r.status(t.code).json({error:t.msg});r.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\disable\PUT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\admin-globals\\[id]\\disable\\PUT.js","names":["resolve","currentUserHasPermission","disableAdminGlobalContent","adminDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","id","params","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport disableAdminGlobalContent from '../../../../../../server/utils/admin-global-content/disableAdminGlobalContent.js';\r\n\r\nconst adminDir = resolve(import.meta.dirname, '../../../../../../dist/admin');\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:globals:update');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const id = request.params.id;\r\n const [error, data] = await disableAdminGlobalContent({ adminDir, id });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,gFAC9BC,8BAA+B,mFAEtC,MAAMC,SAAWH,oBAAoBI,QAAS,+CAE/BC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,yBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,EAAKZ,EAAQa,OAAOD,IACnBF,EAAOI,SAAclB,0BAA0B,CAAEC,kBAAUe,OAElE,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKK","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{resolve}from"path";import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import enableAdminGlobalContent from"../../../../../../server/utils/admin-global-content/enableAdminGlobalContent.js";const adminDir=resolve(import.meta.dirname,"../../../../../../dist/admin");export default async(s,r)=>{const e=s.cookies.session_token,[n,i]=await currentUserHasPermission(e,"system:globals:update");if(n)return r.status(n.code).json({error:n.msg});if(!i)return r.status(403).json({error:"Insufficient permissions"});const o=s.params.id,[t,a]=await enableAdminGlobalContent({adminDir:adminDir,id:o});if(t)return r.status(t.code).json({error:t.msg});r.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\admin-globals\[id]\enable\PUT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\admin-globals\\[id]\\enable\\PUT.js","names":["resolve","currentUserHasPermission","enableAdminGlobalContent","adminDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","id","params","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport enableAdminGlobalContent from '../../../../../../server/utils/admin-global-content/enableAdminGlobalContent.js';\r\n\r\nconst adminDir = resolve(import.meta.dirname, '../../../../../../dist/admin');\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:globals:update');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const id = request.params.id;\r\n const [error, data] = await enableAdminGlobalContent({ adminDir, id });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,gFAC9BC,6BAA8B,kFAErC,MAAMC,SAAWH,oBAAoBI,QAAS,+CAE/BC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,yBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,EAAKZ,EAAQa,OAAOD,IACnBF,EAAOI,SAAclB,yBAAyB,CAAEC,kBAAUe,OAEjE,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKK","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import changePassword from"../../../../../server/utils/auth/changePassword.js";import getSession from"../../../../../server/utils/auth/getSession.js";import bcrypt from"bcrypt";export default async(s,r)=>{try{const e=s.cookies.session_token,[t,o]=await getSession({token:e});if(t||!o||!o.user)return r.status(401).json({error:"Not authenticated"});const{currentPassword:a,newPassword:n}=s.body;if(!a||!n)return r.status(400).json({error:"Current password and new password are required"});if(n.length<8)return r.status(400).json({error:"New password must be at least 8 characters"});if(!await bcrypt.compare(a,o.user.passwordHash))return r.status(400).json({error:"Current password is incorrect"});const[c,u]=await changePassword(o.user.id,n);if(c)return r.status(c.code).json({error:c.msg});r.json({success:!0,message:"Password changed successfully"})}catch(s){console.error("Change password error:",s),r.status(500).json({error:s.message||"Failed to change password"})}};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\change-password\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\auth\\change-password\\POST.js","names":["changePassword","getSession","bcrypt","async","request","response","sessionToken","cookies","session_token","sessionError","session","token","user","status","json","error","currentPassword","newPassword","body","length","compare","passwordHash","changeError","result","id","code","msg","success","message","console"],"sources":["0"],"sourcesContent":["import changePassword from '../../../../../server/utils/auth/changePassword.js';\r\nimport getSession from '../../../../../server/utils/auth/getSession.js';\r\nimport bcrypt from 'bcrypt';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n const sessionToken = request.cookies.session_token;\r\n const [sessionError, session] = await getSession({ token: sessionToken });\r\n \r\n if(sessionError || !session || !session.user){\r\n return response.status(401).json({ error: 'Not authenticated' });\r\n }\r\n \r\n const { currentPassword, newPassword } = request.body;\r\n\r\n if(!currentPassword || !newPassword){\r\n return response.status(400).json({ error: 'Current password and new password are required' });\r\n }\r\n\r\n if(newPassword.length < 8){\r\n return response.status(400).json({ error: 'New password must be at least 8 characters' });\r\n }\r\n\r\n const isValid = await bcrypt.compare(currentPassword, session.user.passwordHash);\r\n \r\n if(!isValid){\r\n return response.status(400).json({ error: 'Current password is incorrect' });\r\n }\r\n\r\n const [changeError, result] = await changePassword(session.user.id, newPassword);\r\n\r\n if(changeError){\r\n return response.status(changeError.code).json({ error: changeError.msg });\r\n }\r\n\r\n response.json({ success: true, message: 'Password changed successfully' });\r\n } catch(error){\r\n console.error('Change password error:', error);\r\n response.status(500).json({ \r\n error: error.message || 'Failed to change password'\r\n });\r\n }\r\n};\r\n"],"mappings":"OAAOA,mBAAoB,4DACpBC,eAAgB,wDAChBC,WAAY,wBAEJC,MAAOC,EAASC,KAC7B,IACE,MAAMC,EAAeF,EAAQG,QAAQC,eAC9BC,EAAcC,SAAiBT,WAAW,CAAEU,MAAOL,IAE1D,GAAGG,IAAiBC,IAAYA,EAAQE,KACtC,OAAOP,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,sBAG5C,MAAMC,gBAAEA,EAAeC,YAAEA,GAAgBb,EAAQc,KAEjD,IAAIF,IAAoBC,EACtB,OAAOZ,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,mDAG5C,GAAGE,EAAYE,OAAS,EACtB,OAAOd,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,+CAK5C,UAFsBb,OAAOkB,QAAQJ,EAAiBN,EAAQE,KAAKS,cAGjE,OAAOhB,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,kCAG5C,MAAOO,EAAaC,SAAgBvB,eAAeU,EAAQE,KAAKY,GAAIP,GAEpE,GAAGK,EACD,OAAOjB,EAASQ,OAAOS,EAAYG,MAAMX,KAAK,CAAEC,MAAOO,EAAYI,MAGrErB,EAASS,KAAK,CAAEa,SAAS,EAAMC,QAAS,iCAC1C,CAAE,MAAMb,GACNc,QAAQd,MAAM,yBAA0BA,GACxCV,EAASQ,OAAO,KAAKC,KAAK,CACxBC,MAAOA,EAAMa,SAAW,6BAE5B","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import loginEmail from"../../../../../../server/utils/auth/loginEmail.js";export default async(e,r)=>{try{const{email:o,password:s}=e.body,[t,n]=await loginEmail(o,s);if(t)return r.status(t.code).json({error:t.msg});r.cookie("session_token",n.sessionToken,{httpOnly:!0,secure:"production"===process.env.NODE_ENV,sameSite:"lax",path:"/",maxAge:n.expiresAt.getTime()-Date.now()}),r.json({user:n.user})}catch(e){console.error("Login error:",e),r.status(500).json({error:"Internal server error"})}};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\login\email\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\auth\\login\\email\\POST.js","names":["loginEmail","async","request","response","email","password","body","error","result","status","code","json","msg","cookie","sessionToken","httpOnly","secure","process","env","NODE_ENV","sameSite","path","maxAge","expiresAt","getTime","Date","now","user","console"],"sources":["0"],"sourcesContent":["import loginEmail from '../../../../../../server/utils/auth/loginEmail.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n const { email, password } = request.body;\r\n \r\n const [error, result] = await loginEmail(email, password);\r\n \r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.cookie('session_token', result.sessionToken, {\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n sameSite: 'lax',\r\n path: '/',\r\n maxAge: result.expiresAt.getTime() - Date.now()\r\n });\r\n \r\n response.json({ user: result.user });\r\n } catch(error){\r\n console.error('Login error:', error);\r\n response.status(500).json({ error: 'Internal server error' });\r\n }\r\n};\r\n"],"mappings":"OAAOA,eAAgB,mEAERC,MAAOC,EAASC,KAC7B,IACE,MAAMC,MAAEA,EAAKC,SAAEA,GAAaH,EAAQI,MAE7BC,EAAOC,SAAgBR,WAAWI,EAAOC,GAEhD,GAAGE,EACD,OAAOJ,EAASM,OAAOF,EAAMG,MAAMC,KAAK,CAAEJ,MAAOA,EAAMK,MAGzDT,EAASU,OAAO,gBAAiBL,EAAOM,aAAc,CACpDC,UAAU,EACVC,OAAiC,eAAzBC,QAAQC,IAAIC,SACpBC,SAAU,MACVC,KAAM,IACNC,OAAQd,EAAOe,UAAUC,UAAYC,KAAKC,QAG5CvB,EAASQ,KAAK,CAAEgB,KAAMnB,EAAOmB,MAC/B,CAAE,MAAMpB,GACNqB,QAAQrB,MAAM,eAAgBA,GAC9BJ,EAASM,OAAO,KAAKE,KAAK,CAAEJ,MAAO,yBACrC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import logout from"../../../../../server/utils/auth/logout.js";export default async(t,e)=>{try{const o=t.cookies.session_token,[s,r]=await logout({token:o});if(s)return e.status(s.code).json({error:s.msg});e.setHeader("Set-Cookie","session_token=; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=0"),e.json(r)}catch(t){e.status(500).json({error:t.message})}};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\logout\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\auth\\logout\\POST.js","names":["logout","async","request","response","token","cookies","session_token","error","result","status","code","json","msg","setHeader","message"],"sources":["0"],"sourcesContent":["import logout from '../../../../../server/utils/auth/logout.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n const token = request.cookies.session_token;\r\n const [error, result] = await logout({ token });\r\n \r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n \r\n response.setHeader('Set-Cookie', 'session_token=; Path=/; HttpOnly; Secure; SameSite=Strict; Max-Age=0');\r\n response.json(result);\r\n } catch(error) {\r\n response.status(500).json({ error: error.message });\r\n }\r\n};\r\n"],"mappings":"OAAOA,WAAY,4DAEJC,MAAOC,EAASC,KAC7B,IACE,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAOC,SAAgBR,OAAO,CAAEI,UAEvC,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAMG,MAAMC,KAAK,CAAEJ,MAAOA,EAAMK,MAGzDT,EAASU,UAAU,aAAc,wEACjCV,EAASQ,KAAKH,EAChB,CAAE,MAAMD,GACNJ,EAASM,OAAO,KAAKE,KAAK,CAAEJ,MAAOA,EAAMO,SAC3C","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import registerEmail from"../../../../../../server/utils/auth/registerEmail.js";export default async(e,r)=>{try{const{email:s,password:i,name:o}=e.body,[t,a]=await registerEmail({email:s,password:i,name:o});if(t)return r.status(t.code).json({error:t.msg});if(a.requiresVerification)return r.json({user:a.user,requiresVerification:a.requiresVerification});r.cookie("session_token",a.sessionToken,{httpOnly:!0,secure:"production"===process.env.NODE_ENV,sameSite:"lax",path:"/",maxAge:a.expiresAt.getTime()-Date.now()}),r.json({user:a.user})}catch(e){console.error("Registration error:",e),r.status(500).json({error:"Internal server error"})}};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\register\email\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\auth\\register\\email\\POST.js","names":["registerEmail","async","request","response","email","password","name","body","error","result","status","code","json","msg","requiresVerification","user","cookie","sessionToken","httpOnly","secure","process","env","NODE_ENV","sameSite","path","maxAge","expiresAt","getTime","Date","now","console"],"sources":["0"],"sourcesContent":["import registerEmail from '../../../../../../server/utils/auth/registerEmail.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n const { email, password, name } = request.body;\r\n \r\n const [error, result] = await registerEmail({ email, password, name });\r\n \r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n if(result.requiresVerification){\r\n return response.json({ user: result.user, requiresVerification: result.requiresVerification });\r\n }\r\n\r\n response.cookie('session_token', result.sessionToken, {\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n sameSite: 'lax',\r\n path: '/',\r\n maxAge: result.expiresAt.getTime() - Date.now()\r\n });\r\n \r\n response.json({ user: result.user });\r\n } catch(error){\r\n console.error('Registration error:', error);\r\n response.status(500).json({ error: 'Internal server error' });\r\n }\r\n};\r\n"],"mappings":"OAAOA,kBAAmB,sEAEXC,MAAOC,EAASC,KAC7B,IACE,MAAMC,MAAEA,EAAKC,SAAEA,EAAQC,KAAEA,GAASJ,EAAQK,MAEnCC,EAAOC,SAAgBT,cAAc,CAAEI,QAAOC,WAAUC,SAE/D,GAAGE,EACD,OAAOL,EAASO,OAAOF,EAAMG,MAAMC,KAAK,CAAEJ,MAAOA,EAAMK,MAGzD,GAAGJ,EAAOK,qBACR,OAAOX,EAASS,KAAK,CAAEG,KAAMN,EAAOM,KAAMD,qBAAsBL,EAAOK,uBAGzEX,EAASa,OAAO,gBAAiBP,EAAOQ,aAAc,CACpDC,UAAU,EACVC,OAAiC,eAAzBC,QAAQC,IAAIC,SACpBC,SAAU,MACVC,KAAM,IACNC,OAAQhB,EAAOiB,UAAUC,UAAYC,KAAKC,QAG5C1B,EAASS,KAAK,CAAEG,KAAMN,EAAOM,MAC/B,CAAE,MAAMP,GACNsB,QAAQtB,MAAM,sBAAuBA,GACrCL,EAASO,OAAO,KAAKE,KAAK,CAAEJ,MAAO,yBACrC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import resetPassword from"../../../../../server/utils/auth/resetPassword.js";import loginEmail from"../../../../../server/utils/auth/loginEmail.js";import db from"../../../../../server/db/index.js";import{user}from"../../../../../server/db/schema.js";import{eq}from"drizzle-orm";export default async(s,e)=>{try{const{token:r,newPassword:o,logoutAll:t=!1}=s.body;console.log("Password reset request - Token:",r);const[a,n]=await resetPassword({token:r,password:o,logoutAll:t});if(a)return e.status(a.code).json({error:a.msg});const i=await db.select().from(user).where(eq(user.id,n.userId)).limit(1);if(0===i.length)return e.status(500).json({error:"User not found after password reset"});const[l,u]=await loginEmail(i[0].email,o);if(l)return e.status(l.code).json({error:l.msg});e.cookie("session_token",u.sessionToken,{httpOnly:!0,secure:"production"===process.env.NODE_ENV,sameSite:"lax",path:"/",maxAge:24*(u.sessionDurationDays||7)*60*60*1e3}),e.json({success:!0,user:u.user})}catch(s){console.error("Password reset error:",s),e.status(500).json({error:"Failed to reset password"})}};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\reset-password\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\auth\\reset-password\\POST.js","names":["resetPassword","loginEmail","db","user","eq","async","request","response","token","newPassword","logoutAll","body","console","log","resetError","result","password","status","code","json","error","msg","userData","select","from","where","id","userId","limit","length","loginError","loginResult","email","cookie","sessionToken","httpOnly","secure","process","env","NODE_ENV","sameSite","path","maxAge","sessionDurationDays","success"],"sources":["0"],"sourcesContent":["import resetPassword from '../../../../../server/utils/auth/resetPassword.js';\r\nimport loginEmail from '../../../../../server/utils/auth/loginEmail.js';\r\nimport db from '../../../../../server/db/index.js';\r\nimport { user } from '../../../../../server/db/schema.js';\r\nimport { eq } from 'drizzle-orm';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n const { token, newPassword, logoutAll = false } = request.body;\r\n \r\n console.log('Password reset request - Token:', token);\r\n \r\n const [resetError, result] = await resetPassword({ token, password: newPassword, logoutAll });\r\n \r\n if(resetError){\r\n return response.status(resetError.code).json({ error: resetError.msg });\r\n }\r\n \r\n const userData = await db.select().from(user).where(eq(user.id, result.userId)).limit(1);\r\n \r\n if(userData.length === 0){\r\n return response.status(500).json({ error: 'User not found after password reset' });\r\n }\r\n\r\n const [loginError, loginResult] = await loginEmail(userData[0].email, newPassword);\r\n \r\n if(loginError){\r\n return response.status(loginError.code).json({ error: loginError.msg });\r\n }\r\n \r\n response.cookie('session_token', loginResult.sessionToken, {\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n sameSite: 'lax',\r\n path: '/',\r\n maxAge: (loginResult.sessionDurationDays || 7) * 24 * 60 * 60 * 1000\r\n });\r\n \r\n response.json({ success: true, user: loginResult.user });\r\n } catch(error){\r\n console.error('Password reset error:', error);\r\n response.status(500).json({ error: 'Failed to reset password' });\r\n }\r\n};\r\n"],"mappings":"OAAOA,kBAAmB,2DACnBC,eAAgB,wDAChBC,OAAQ,2CACNC,SAAY,4CACZC,OAAU,6BAEJC,MAAOC,EAASC,KAC7B,IACE,MAAMC,MAAEA,EAAKC,YAAEA,EAAWC,UAAEA,GAAY,GAAUJ,EAAQK,KAE1DC,QAAQC,IAAI,kCAAmCL,GAE/C,MAAOM,EAAYC,SAAgBf,cAAc,CAAEQ,QAAOQ,SAAUP,EAAaC,cAEjF,GAAGI,EACD,OAAOP,EAASU,OAAOH,EAAWI,MAAMC,KAAK,CAAEC,MAAON,EAAWO,MAGnE,MAAMC,QAAiBpB,GAAGqB,SAASC,KAAKrB,MAAMsB,MAAMrB,GAAGD,KAAKuB,GAAIX,EAAOY,SAASC,MAAM,GAEtF,GAAuB,IAApBN,EAASO,OACV,OAAOtB,EAASU,OAAO,KAAKE,KAAK,CAAEC,MAAO,wCAG5C,MAAOU,EAAYC,SAAqB9B,WAAWqB,EAAS,GAAGU,MAAOvB,GAEtE,GAAGqB,EACD,OAAOvB,EAASU,OAAOa,EAAWZ,MAAMC,KAAK,CAAEC,MAAOU,EAAWT,MAGnEd,EAAS0B,OAAO,gBAAiBF,EAAYG,aAAc,CACzDC,UAAU,EACVC,OAAiC,eAAzBC,QAAQC,IAAIC,SACpBC,SAAU,MACVC,KAAM,IACNC,OAAiD,IAAxCX,EAAYY,qBAAuB,GAAU,GAAK,GAAK,MAGlEpC,EAASY,KAAK,CAAEyB,SAAS,EAAMzC,KAAM4B,EAAY5B,MACnD,CAAE,MAAMiB,GACNR,QAAQQ,MAAM,wBAAyBA,GACvCb,EAASU,OAAO,KAAKE,KAAK,CAAEC,MAAO,4BACrC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import getSession from"../../../../../server/utils/auth/getSession.js";export default async(s,e)=>{try{const o=s.cookies.session_token,[n,r]=await getSession({token:o});if(n||!r||!r.user)return e.json({session:null,user:null});const{passwordHash:t,...i}=r.user;e.json({session:r.session,user:i})}catch(s){console.log("Session API error:",s),e.status(500).json({error:s.message})}};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\session\GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\auth\\session\\GET.js","names":["getSession","async","request","response","sessionToken","cookies","session_token","error","sessionData","token","user","json","session","passwordHash","userWithoutPassword","console","log","status","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../server/utils/auth/getSession.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n const sessionToken = request.cookies.session_token;\r\n const [error, sessionData] = await getSession({ token: sessionToken });\r\n \r\n if(error || !sessionData || !sessionData.user){\r\n return response.json({ session: null, user: null });\r\n }\r\n \r\n const { passwordHash, ...userWithoutPassword } = sessionData.user;\r\n \r\n response.json({\r\n session: sessionData.session,\r\n user: userWithoutPassword\r\n });\r\n } catch(error){\r\n console.log('Session API error:', error);\r\n response.status(500).json({ error: error.message });\r\n }\r\n};\r\n"],"mappings":"OAAOA,eAAgB,gEAERC,MAAOC,EAASC,KAC7B,IACE,MAAMC,EAAeF,EAAQG,QAAQC,eAC9BC,EAAOC,SAAqBR,WAAW,CAAES,MAAOL,IAEvD,GAAGG,IAAUC,IAAgBA,EAAYE,KACvC,OAAOP,EAASQ,KAAK,CAAEC,QAAS,KAAMF,KAAM,OAG9C,MAAMG,aAAEA,KAAiBC,GAAwBN,EAAYE,KAE7DP,EAASQ,KAAK,CACZC,QAASJ,EAAYI,QACrBF,KAAMI,GAEV,CAAE,MAAMP,GACNQ,QAAQC,IAAI,qBAAsBT,GAClCJ,EAASc,OAAO,KAAKN,KAAK,CAAEJ,MAAOA,EAAMW,SAC3C","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import crypto from"crypto";import verifyEmail from"../../../../../server/utils/auth/verifyEmail.js";import db from"../../../../../server/db/index.js";import{session,user}from"../../../../../server/db/schema.js";import{eq}from"drizzle-orm";import getSetting from"../../../../../server/utils/settings/getSetting.js";const generateToken=()=>crypto.randomBytes(32).toString("hex");export default async(e,r)=>{try{const{token:t}=e.body,[s,o]=await verifyEmail({token:t});if(s)return r.status(s.code).json({error:s.msg});const i=await db.select().from(user).where(eq(user.id,o.userId)).limit(1);if(0===i.length)return r.status(500).json({error:"User not found"});const n=generateToken(),[a,m]=await getSetting("system","session_duration_days",7);if(a)return r.status(a.code).json({error:a.msg});const d=new Date(Date.now()+24*m*60*60*1e3),c=new Date;await db.insert(session).values({token:n,userId:o.userId,expiresAt:d,createdAt:c}),r.cookie("session_token",n,{httpOnly:!0,secure:"production"===process.env.NODE_ENV,sameSite:"lax",path:"/",maxAge:24*m*60*60*1e3}),r.json({success:!0,user:{id:i[0].id,email:i[0].email,name:i[0].name,emailVerified:i[0].emailVerified}})}catch(e){console.error("Email verification error:",e),r.status(500).json({error:"Internal server error"})}};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\auth\verify-email\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\auth\\verify-email\\POST.js","names":["crypto","verifyEmail","db","session","user","eq","getSetting","generateToken","randomBytes","toString","async","request","response","token","body","error","result","status","code","json","msg","userRecord","select","from","where","id","userId","limit","length","sessionToken","settingError","sessionDurationDays","expiresAt","Date","now","insert","values","createdAt","cookie","httpOnly","secure","process","env","NODE_ENV","sameSite","path","maxAge","success","email","name","emailVerified","console"],"sources":["0"],"sourcesContent":["import crypto from 'crypto';\r\nimport verifyEmail from '../../../../../server/utils/auth/verifyEmail.js';\r\nimport db from '../../../../../server/db/index.js';\r\nimport { session, user } from '../../../../../server/db/schema.js';\r\nimport { eq } from 'drizzle-orm';\r\nimport getSetting from '../../../../../server/utils/settings/getSetting.js';\r\n\r\nconst generateToken = () => crypto.randomBytes(32).toString('hex');\r\n\r\nexport default async (request, response) => {\r\n try {\r\n const { token } = request.body;\r\n \r\n const [error, result] = await verifyEmail({ token });\r\n \r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n const userRecord = await db\r\n .select()\r\n .from(user)\r\n .where(eq(user.id, result.userId))\r\n .limit(1);\r\n\r\n if(userRecord.length === 0){\r\n return response.status(500).json({ error: 'User not found' });\r\n }\r\n\r\n const sessionToken = generateToken();\r\n const [settingError, sessionDurationDays] = await getSetting('system', 'session_duration_days', 7);\r\n \r\n if(settingError){\r\n return response.status(settingError.code).json({ error: settingError.msg });\r\n }\r\n \r\n const expiresAt = new Date(Date.now() + sessionDurationDays * 24 * 60 * 60 * 1000);\r\n const now = new Date();\r\n\r\n await db.insert(session).values({\r\n token: sessionToken,\r\n userId: result.userId,\r\n expiresAt,\r\n createdAt: now,\r\n });\r\n\r\n response.cookie('session_token', sessionToken, {\r\n httpOnly: true,\r\n secure: process.env.NODE_ENV === 'production',\r\n sameSite: 'lax',\r\n path: '/',\r\n maxAge: sessionDurationDays * 24 * 60 * 60 * 1000\r\n });\r\n\r\n response.json({ \r\n success: true,\r\n user: {\r\n id: userRecord[0].id,\r\n email: userRecord[0].email,\r\n name: userRecord[0].name,\r\n emailVerified: userRecord[0].emailVerified,\r\n }\r\n });\r\n } catch(error){\r\n console.error('Email verification error:', error);\r\n response.status(500).json({ error: 'Internal server error' });\r\n }\r\n};\r\n"],"mappings":"OAAOA,WAAY,gBACZC,gBAAiB,yDACjBC,OAAQ,2CACNC,QAASC,SAAY,4CACrBC,OAAU,qBACZC,eAAgB,qDAEvB,MAAMC,cAAgB,IAAMP,OAAOQ,YAAY,IAAIC,SAAS,sBAE7CC,MAAOC,EAASC,KAC7B,IACE,MAAMC,MAAEA,GAAUF,EAAQG,MAEnBC,EAAOC,SAAgBf,YAAY,CAAEY,UAE5C,GAAGE,EACD,OAAOH,EAASK,OAAOF,EAAMG,MAAMC,KAAK,CAAEJ,MAAOA,EAAMK,MAGzD,MAAMC,QAAmBnB,GACtBoB,SACAC,KAAKnB,MACLoB,MAAMnB,GAAGD,KAAKqB,GAAIT,EAAOU,SACzBC,MAAM,GAET,GAAyB,IAAtBN,EAAWO,OACZ,OAAOhB,EAASK,OAAO,KAAKE,KAAK,CAAEJ,MAAO,mBAG5C,MAAMc,EAAetB,iBACduB,EAAcC,SAA6BzB,WAAW,SAAU,wBAAyB,GAEhG,GAAGwB,EACD,OAAOlB,EAASK,OAAOa,EAAaZ,MAAMC,KAAK,CAAEJ,MAAOe,EAAaV,MAGvE,MAAMY,EAAY,IAAIC,KAAKA,KAAKC,MAA8B,GAAtBH,EAA2B,GAAK,GAAK,KACvEG,EAAM,IAAID,WAEV/B,GAAGiC,OAAOhC,SAASiC,OAAO,CAC9BvB,MAAOgB,EACPH,OAAQV,EAAOU,OACfM,YACAK,UAAWH,IAGbtB,EAAS0B,OAAO,gBAAiBT,EAAc,CAC7CU,UAAU,EACVC,OAAiC,eAAzBC,QAAQC,IAAIC,SACpBC,SAAU,MACVC,KAAM,IACNC,OAA8B,GAAtBf,EAA2B,GAAK,GAAK,MAG/CnB,EAASO,KAAK,CACZ4B,SAAS,EACT3C,KAAM,CACJqB,GAAIJ,EAAW,GAAGI,GAClBuB,MAAO3B,EAAW,GAAG2B,MACrBC,KAAM5B,EAAW,GAAG4B,KACpBC,cAAe7B,EAAW,GAAG6B,gBAGnC,CAAE,MAAMnC,GACNoC,QAAQpC,MAAM,4BAA6BA,GAC3CH,EAASK,OAAO,KAAKE,KAAK,CAAEJ,MAAO,yBACrC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import uninstallExtension from"../../../../server/utils/extensions/uninstallExtension.js";export default async(s,n)=>{const e=s.cookies.session_token,[r,t]=await currentUserHasPermission(e,"system:extensions:uninstall");if(r)return n.status(r.code).json({error:r.msg});if(!t)return n.status(403).json({error:"Insufficient permissions"});const{name:i}=s.body,[o,a]=await uninstallExtension({name:i});if(o)return n.status(o.code).json({error:o.msg});n.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\DELETE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\extensions\\DELETE.js","names":["currentUserHasPermission","uninstallExtension","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","name","body","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport uninstallExtension from '../../../../server/utils/extensions/uninstallExtension.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:extensions:uninstall');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { name } = request.body;\r\n const [error, data] = await uninstallExtension({ name });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,uBAAwB,2EAEhBC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,+BAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,KAAEA,GAASZ,EAAQa,MAClBH,EAAOI,SAAchB,mBAAmB,CAAEc,SAEjD,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKK","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import listExtensions from"../../../../server/utils/extensions/listExtensions.js";export default async(s,e)=>{const r=s.cookies.session_token,[t,i]=await currentUserHasPermission(r,"system:extensions:read");if(t)return e.status(t.code).json({error:t.msg});if(!i)return e.status(403).json({error:"Insufficient permissions"});const n=parseInt(s.query.limit)||50,o=parseInt(s.query.offset)||0,[a,u]=await listExtensions({limit:n,offset:o});if(a)return e.status(a.code).json({error:a.msg});e.json(u)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\extensions\\GET.js","names":["currentUserHasPermission","listExtensions","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';\r\nimport listExtensions from '../../../../server/utils/extensions/listExtensions.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:extensions:read');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const limit = parseInt(request.query.limit) || 50;\r\n const offset = parseInt(request.query.offset) || 0;\r\n const [error, data] = await listExtensions({ limit, offset });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,mBAAoB,uEAEZC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,0BAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,EAAQC,SAASb,EAAQc,MAAMF,QAAU,GACzCG,EAASF,SAASb,EAAQc,MAAMC,SAAW,GAC1CL,EAAOM,SAAclB,eAAe,CAAEc,QAAOG,WAEpD,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 installExtension from"../../../../server/utils/extensions/installExtension.js";export default async(s,e)=>{const n=s.cookies.session_token,[r,t]=await currentUserHasPermission(n,"system:extensions:install");if(r)return e.status(r.code).json({error:r.msg});if(!t)return e.status(403).json({error:"Insufficient permissions"});const{name:i}=s.body,[o,a]=await installExtension({name:i});if(o)return e.status(o.code).json({error:o.msg});e.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\extensions\\POST.js","names":["currentUserHasPermission","installExtension","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","name","body","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport installExtension from '../../../../server/utils/extensions/installExtension.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:extensions:install');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const { name } = request.body;\r\n const [error, data] = await installExtension({ name });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,qBAAsB,yEAEdC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,6BAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,KAAEA,GAASZ,EAAQa,MAClBH,EAAOI,SAAchB,iBAAiB,CAAEc,SAE/C,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKK","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import disableExtension from"../../../../../server/utils/extensions/disableExtension.js";export default async(s,e)=>{const r=s.cookies.session_token,[n,i]=await currentUserHasPermission(r,"system:extensions:manage");if(n)return e.status(n.code).json({error:n.msg});if(!i)return e.status(403).json({error:"Insufficient permissions"});const o=s.params.name,[t,a]=await disableExtension({name:o});if(t)return e.status(t.code).json({error:t.msg});e.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\disable\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\extensions\\[name]\\disable\\POST.js","names":["currentUserHasPermission","disableExtension","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","name","params","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport disableExtension from '../../../../../server/utils/extensions/disableExtension.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:extensions:manage');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const name = request.params.name;\r\n const [error, data] = await disableExtension({ name });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,6BAA8B,6EAC9BC,qBAAsB,4EAEdC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,4BAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,EAAOZ,EAAQa,OAAOD,MACrBF,EAAOI,SAAchB,iBAAiB,CAAEc,SAE/C,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKK","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import enableExtension from"../../../../../server/utils/extensions/enableExtension.js";export default async(s,e)=>{const r=s.cookies.session_token,[n,o]=await currentUserHasPermission(r,"system:extensions:manage");if(n)return e.status(n.code).json({error:n.msg});if(!o)return e.status(403).json({error:"Insufficient permissions"});const t=s.params.name,[i,a]=await enableExtension({name:t});if(i)return e.status(i.code).json({error:i.msg});e.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\enable\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\extensions\\[name]\\enable\\POST.js","names":["currentUserHasPermission","enableExtension","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","name","params","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport enableExtension from '../../../../../server/utils/extensions/enableExtension.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:extensions:manage');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const name = request.params.name;\r\n const [error, data] = await enableExtension({ name });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,6BAA8B,6EAC9BC,oBAAqB,2EAEbC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,4BAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,EAAOZ,EAAQa,OAAOD,MACrBF,EAAOI,SAAchB,gBAAgB,CAAEc,SAE9C,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKK","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import updateExtension from"../../../../../server/utils/extensions/updateExtension.js";export default async(s,e)=>{const r=s.cookies.session_token,[n,t]=await currentUserHasPermission(r,"system:extensions:manage");if(n)return e.status(n.code).json({error:n.msg});if(!t)return e.status(403).json({error:"Insufficient permissions"});const o=s.params.name,i=s.body?.version||"latest",[a,m]=await updateExtension({name:o,version:i});if(a)return e.status(a.code).json({error:a.msg});e.json(m)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\update\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\extensions\\[name]\\update\\POST.js","names":["currentUserHasPermission","updateExtension","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","name","params","version","body","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport updateExtension from '../../../../../server/utils/extensions/updateExtension.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:extensions:manage');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const name = request.params.name;\r\n const version = request.body?.version || 'latest';\r\n const [error, data] = await updateExtension({ name, version });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,6BAA8B,6EAC9BC,oBAAqB,2EAEbC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,4BAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,EAAOZ,EAAQa,OAAOD,KACtBE,EAAUd,EAAQe,MAAMD,SAAW,UAClCJ,EAAOM,SAAclB,gBAAgB,CAAEc,OAAME,YAEpD,GAAGJ,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 checkExtensionUpdate from"../../../../../server/utils/extensions/checkExtensionUpdate.js";export default async(s,e)=>{const r=s.cookies.session_token,[n,t]=await currentUserHasPermission(r,"system:extensions:manage");if(n)return e.status(n.code).json({error:n.msg});if(!t)return e.status(403).json({error:"Insufficient permissions"});const o=s.params.name,[i,a]=await checkExtensionUpdate({name:o});if(i)return e.status(i.code).json({error:i.msg});e.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\[name]\update-check\GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\extensions\\[name]\\update-check\\GET.js","names":["currentUserHasPermission","checkExtensionUpdate","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","name","params","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport checkExtensionUpdate from '../../../../../server/utils/extensions/checkExtensionUpdate.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:extensions:manage');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const name = request.params.name;\r\n const [error, data] = await checkExtensionUpdate({ name });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,6BAA8B,6EAC9BC,yBAA0B,gFAElBC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,4BAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,EAAOZ,EAAQa,OAAOD,MACrBF,EAAOI,SAAchB,qBAAqB,CAAEc,SAEnD,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKK","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import{readFile}from"fs/promises";import{existsSync}from"fs";import{join,dirname}from"path";import{createRequire}from"module";const requireFromProject=createRequire(join(process.cwd(),"package.json")),knownExtensionsPath=join(import.meta.dirname,"../../../admin/known-extensions.json");export default async(e,s)=>{const r=e.cookies.session_token,[o,n]=await currentUserHasPermission(r,"system:extensions:read");if(o)return s.status(o.code).json({error:o.msg});if(!n)return s.status(403).json({error:"Insufficient permissions"});let t=[];existsSync(knownExtensionsPath)&&(t=JSON.parse(await readFile(knownExtensionsPath,"utf-8")));const i=join(process.cwd(),"package.json"),a=JSON.parse(await readFile(i,"utf-8")),c={...a.dependencies,...a.devDependencies},m=[];for(const[e]of Object.entries(c))try{const s=requireFromProject.resolve(`${e}/package.json`),r=JSON.parse(await readFile(s,"utf-8"));if(r.kempo){const s=t.find(s=>s.name===e);m.push({name:e,version:r.version,description:r.description||s?.description||"",author:r.author||s?.author||""})}}catch{}s.json({items:m,total:m.length})};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\available\GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\extensions\\available\\GET.js","names":["currentUserHasPermission","readFile","existsSync","join","dirname","createRequire","requireFromProject","process","cwd","knownExtensionsPath","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","knownExtensions","JSON","parse","pkgPath","projectPkg","allDeps","dependencies","devDependencies","available","depName","Object","entries","depPkgPath","resolve","depPkg","kempo","known","find","k","name","push","version","description","author","items","total","length"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport { readFile } from 'fs/promises';\r\nimport { existsSync } from 'fs';\r\nimport { join, dirname } from 'path';\r\nimport { createRequire } from 'module';\r\n\r\nconst requireFromProject = createRequire(join(process.cwd(), 'package.json'));\r\nconst knownExtensionsPath = join(import.meta.dirname, '../../../admin/known-extensions.json');\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:extensions:read');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n let knownExtensions = [];\r\n if(existsSync(knownExtensionsPath)){\r\n knownExtensions = JSON.parse(await readFile(knownExtensionsPath, 'utf-8'));\r\n }\r\n\r\n const pkgPath = join(process.cwd(), 'package.json');\r\n const projectPkg = JSON.parse(await readFile(pkgPath, 'utf-8'));\r\n const allDeps = {\r\n ...projectPkg.dependencies,\r\n ...projectPkg.devDependencies,\r\n };\r\n\r\n const available = [];\r\n for(const [depName] of Object.entries(allDeps)){\r\n try {\r\n const depPkgPath = requireFromProject.resolve(`${depName}/package.json`);\r\n const depPkg = JSON.parse(await readFile(depPkgPath, 'utf-8'));\r\n if(depPkg.kempo){\r\n const known = knownExtensions.find(k => k.name === depName);\r\n available.push({\r\n name: depName,\r\n version: depPkg.version,\r\n description: depPkg.description || known?.description || '',\r\n author: depPkg.author || known?.author || '',\r\n });\r\n }\r\n } catch {}\r\n }\r\n\r\n response.json({ items: available, total: available.length });\r\n};\r\n"],"mappings":"OAAOA,6BAA8B,6EAC5BC,aAAgB,qBAChBC,eAAkB,YAClBC,KAAMC,YAAe,cACrBC,kBAAqB,SAE9B,MAAMC,mBAAqBD,cAAcF,KAAKI,QAAQC,MAAO,iBACvDC,oBAAsBN,iBAAiBC,QAAS,uDAEvCM,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBjB,yBAAyBa,EAAO,0BAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,IAAIE,EAAkB,GACnBrB,WAAWO,uBACZc,EAAkBC,KAAKC,YAAYxB,SAASQ,oBAAqB,WAGnE,MAAMiB,EAAUvB,KAAKI,QAAQC,MAAO,gBAC9BmB,EAAaH,KAAKC,YAAYxB,SAASyB,EAAS,UAChDE,EAAU,IACXD,EAAWE,gBACXF,EAAWG,iBAGVC,EAAY,GAClB,IAAI,MAAOC,KAAYC,OAAOC,QAAQN,GACpC,IACE,MAAMO,EAAa7B,mBAAmB8B,QAAQ,GAAGJ,kBAC3CK,EAASb,KAAKC,YAAYxB,SAASkC,EAAY,UACrD,GAAGE,EAAOC,MAAM,CACd,MAAMC,EAAQhB,EAAgBiB,KAAKC,GAAKA,EAAEC,OAASV,GACnDD,EAAUY,KAAK,CACbD,KAAMV,EACNY,QAASP,EAAOO,QAChBC,YAAaR,EAAOQ,aAAeN,GAAOM,aAAe,GACzDC,OAAQT,EAAOS,QAAUP,GAAOO,QAAU,IAE9C,CACF,CAAE,MAAO,CAGXlC,EAASQ,KAAK,CAAE2B,MAAOhB,EAAWiB,MAAOjB,EAAUkB","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import{readFile}from"fs/promises";import{existsSync}from"fs";import{join}from"path";const knownExtensionsPath=join(import.meta.dirname,"../../../admin/known-extensions.json");export default async(s,n)=>{const e=s.cookies.session_token,[t,o]=await currentUserHasPermission(e,"system:extensions:read");if(t)return n.status(t.code).json({error:t.msg});if(!o)return n.status(403).json({error:"Insufficient permissions"});if(!existsSync(knownExtensionsPath))return n.json({items:[],total:0});const r=JSON.parse(await readFile(knownExtensionsPath,"utf-8"));n.json({items:r,total:r.length})};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\extensions\known\GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\extensions\\known\\GET.js","names":["currentUserHasPermission","readFile","existsSync","join","knownExtensionsPath","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","items","total","JSON","parse","length"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport { readFile } from 'fs/promises';\r\nimport { existsSync } from 'fs';\r\nimport { join } from 'path';\r\n\r\nconst knownExtensionsPath = join(import.meta.dirname, '../../../admin/known-extensions.json');\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:extensions:read');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n if(!existsSync(knownExtensionsPath)){\r\n return response.json({ items: [], total: 0 });\r\n }\r\n\r\n const items = JSON.parse(await readFile(knownExtensionsPath, 'utf-8'));\r\n response.json({ items, total: items.length });\r\n};\r\n"],"mappings":"OAAOA,6BAA8B,6EAC5BC,aAAgB,qBAChBC,eAAkB,YAClBC,SAAY,OAErB,MAAMC,oBAAsBD,iBAAiBE,QAAS,uDAEvCC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBb,yBAAyBS,EAAO,0BAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,IAAIf,WAAWE,qBACb,OAAOI,EAASQ,KAAK,CAAEG,MAAO,GAAIC,MAAO,IAG3C,MAAMD,EAAQE,KAAKC,YAAYrB,SAASG,oBAAqB,UAC7DI,EAASQ,KAAK,CAAEG,QAAOC,MAAOD,EAAMI","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import requestPasswordReset from"../../../../server/utils/auth/requestPasswordReset.js";export default async(s,e)=>{try{const{email:r}=s.body,[t,o]=await requestPasswordReset({email:r});if(t)return e.status(t.code).json({error:t.msg});e.json({success:!0,message:"Password reset email sent"})}catch(s){console.error("Forgot password error:",s),e.status(500).json({error:"Failed to send password reset email"})}};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\forgot-password\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\forgot-password\\POST.js","names":["requestPasswordReset","async","request","response","email","body","error","result","status","code","json","msg","success","message","console"],"sources":["0"],"sourcesContent":["import requestPasswordReset from '../../../../server/utils/auth/requestPasswordReset.js';\r\n\r\nexport default async (request, response) => {\r\n try {\r\n const { email } = request.body;\r\n \r\n const [error, result] = await requestPasswordReset({ email });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json({ success: true, message: 'Password reset email sent' });\r\n } catch(error){\r\n console.error('Forgot password error:', error);\r\n response.status(500).json({ error: 'Failed to send password reset email' });\r\n }\r\n};\r\n"],"mappings":"OAAOA,yBAA0B,uEAElBC,MAAOC,EAASC,KAC7B,IACE,MAAMC,MAAEA,GAAUF,EAAQG,MAEnBC,EAAOC,SAAgBP,qBAAqB,CAAEI,UAErD,GAAGE,EACD,OAAOH,EAASK,OAAOF,EAAMG,MAAMC,KAAK,CAAEJ,MAAOA,EAAMK,MAGzDR,EAASO,KAAK,CAAEE,SAAS,EAAMC,QAAS,6BAC1C,CAAE,MAAMP,GACNQ,QAAQR,MAAM,yBAA0BA,GACxCH,EAASK,OAAO,KAAKE,KAAK,CAAEJ,MAAO,uCACrC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{resolve}from"path";import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import deleteFragment from"../../../../server/utils/fragments/deleteFragment.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:fragments:delete");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const{files:i}=e.body||{};if(!i?.length)return r.status(400).json({error:"No files specified"});const[n,a]=await deleteFragment({rootDir:rootDir,files:i});if(n)return r.status(n.code).json({error:n.msg});r.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\DELETE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\fragments\\DELETE.js","names":["resolve","currentUserHasPermission","deleteFragment","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';\r\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport deleteFragment from '../../../../server/utils/fragments/deleteFragment.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:fragments:delete');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { files } = request.body || {};\r\n\r\n\tif(!files?.length){\r\n\t\treturn response.status(400).json({ error: 'No files specified' });\r\n\t}\r\n\r\n\tconst [error, result] = await deleteFragment({ rootDir, files });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(result);\r\n};\r\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,2BAEzE,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,eAAe,CAAEC,gBAASe,UAExD,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 listFragments from"../../../../server/utils/fragments/listFragments.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:fragments: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 listFragments({rootDir:rootDir});if(i)return r.status(i.code).json({error:i.msg});r.json(n)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\fragments\\GET.js","names":["resolve","currentUserHasPermission","listFragments","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport listFragments from '../../../../server/utils/fragments/listFragments.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:fragments:read');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst [error, data] = await listFragments({ rootDir });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(data);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,0EAC9BC,kBAAmB,sDAE1B,MAAMC,QAAUH,oBAAoBI,QAAS,yCAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,yBAEzE,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 createFragment from"../../../../server/utils/fragments/createFragment.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:fragments:create");if(t)return e.status(t.code).json({error:t.msg});if(!o)return e.status(403).json({error:"Insufficient permissions"});const{directory:i,name:n}=r.body;if(!n)return e.status(400).json({error:"Fragment name is required"});const[,a]=await getSession({token:s}),m=a?.user?.name||"",[u,c]=await createFragment({rootDir:rootDir,directory:i,name:n,author:m});if(u)return e.status(u.code).json({error:u.msg});e.status(201).json(c)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\fragments\\POST.js","names":["resolve","currentUserHasPermission","getSession","createFragment","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","directory","name","body","sessionData","author","user","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport getSession from '../../../../server/utils/auth/getSession.js';\r\nimport createFragment from '../../../../server/utils/fragments/createFragment.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:fragments:create');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { directory, name } = request.body;\r\n\r\n\tif(!name){\r\n\t\treturn response.status(400).json({ error: 'Fragment name is required' });\r\n\t}\r\n\r\n\tconst [, sessionData] = await getSession({ token });\r\n\tconst author = sessionData?.user?.name || '';\r\n\r\n\tconst [error, data] = await createFragment({ rootDir, directory, name, author });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.status(201).json(data);\r\n};\r\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,2BAEzE,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,GAASb,EAAQc,KAEpC,IAAID,EACH,OAAOZ,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,8BAG3C,MAAO,CAAEK,SAAqBpB,WAAW,CAAEO,UACrCc,EAASD,GAAaE,MAAMJ,MAAQ,IAEnCH,EAAOQ,SAActB,eAAe,CAAEC,gBAASe,YAAWC,OAAMG,WAEvE,GAAGN,EACF,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDV,EAASM,OAAO,KAAKE,KAAKS","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{resolve}from"path";import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import disableFragment from"../../../../../server/utils/fragments/disableFragment.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:update");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.body||{};if(!i)return s.status(400).json({error:"File path is required"});const[n,a]=await disableFragment({rootDir:rootDir,file:i});if(n)return s.status(n.code).json({error:n.msg});s.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\disable\PUT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\fragments\\disable\\PUT.js","names":["resolve","currentUserHasPermission","disableFragment","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';\r\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport disableFragment from '../../../../../server/utils/fragments/disableFragment.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:update');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { file } = request.body || {};\r\n\r\n\tif(!file){\r\n\t\treturn response.status(400).json({ error: 'File path is required' });\r\n\t}\r\n\r\n\tconst [error, result] = await disableFragment({ rootDir, file });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(result);\r\n};\r\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 enableFragment from"../../../../../server/utils/fragments/enableFragment.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:update");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.body||{};if(!i)return s.status(400).json({error:"File path is required"});const[n,a]=await enableFragment({rootDir:rootDir,file:i});if(n)return s.status(n.code).json({error:n.msg});s.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\enable\PUT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\fragments\\enable\\PUT.js","names":["resolve","currentUserHasPermission","enableFragment","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';\r\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport enableFragment from '../../../../../server/utils/fragments/enableFragment.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:update');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { file } = request.body || {};\r\n\r\n\tif(!file){\r\n\t\treturn response.status(400).json({ error: 'File path is required' });\r\n\t}\r\n\r\n\tconst [error, result] = await enableFragment({ rootDir, file });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(result);\r\n};\r\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 getFragment from"../../../../../server/utils/fragments/getFragment.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:fragments: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 getFragment({rootDir:rootDir,file:i});if(n)return s.status(n.code).json({error:n.msg});s.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\file\GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\fragments\\file\\GET.js","names":["resolve","currentUserHasPermission","getFragment","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';\r\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport getFragment from '../../../../../server/utils/fragments/getFragment.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:fragments:read');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { file } = request.query;\r\n\r\n\tif(!file){\r\n\t\treturn response.status(400).json({ error: 'File path is required' });\r\n\t}\r\n\r\n\tconst [error, data] = await getFragment({ rootDir, file });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(data);\r\n};\r\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,yBAEzE,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 moveFragment from"../../../../../server/utils/fragments/moveFragment.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,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,m]=await moveFragment({rootDir:rootDir,file:i,newFile:n});if(a)return e.status(a.code).json({error:a.msg});e.json(m)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\file\PATCH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\fragments\\file\\PATCH.js","names":["resolve","currentUserHasPermission","moveFragment","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';\r\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport moveFragment from '../../../../../server/utils/fragments/moveFragment.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:pages:update');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { file, newFile } = request.body;\r\n\r\n\tif(!file){\r\n\t\treturn response.status(400).json({ error: 'File path is required' });\r\n\t}\r\n\r\n\tif(!newFile){\r\n\t\treturn response.status(400).json({ error: 'New file path is required' });\r\n\t}\r\n\r\n\tconst [error, data] = await moveFragment({ rootDir, file, newFile });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(data);\r\n};\r\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 updateFragment from"../../../../../server/utils/fragments/updateFragment.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:fragments:update");if(t)return s.status(t.code).json({error:t.msg});if(!o)return s.status(403).json({error:"Insufficient permissions"});const{file:i,name:n,author:a,markup:m}=r.body;if(!i)return s.status(400).json({error:"File path is required"});const[u,p]=await updateFragment({rootDir:rootDir,file:i,name:n,author:a,markup:m});if(u)return s.status(u.code).json({error:u.msg});s.json(p)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\fragments\file\PUT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\fragments\\file\\PUT.js","names":["resolve","currentUserHasPermission","updateFragment","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';\r\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport updateFragment from '../../../../../server/utils/fragments/updateFragment.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:fragments:update');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { file, name, author, markup } = request.body;\r\n\r\n\tif(!file){\r\n\t\treturn response.status(400).json({ error: 'File path is required' });\r\n\t}\r\n\r\n\tconst [error, data] = await updateFragment({ rootDir, file, name, author, markup });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(data);\r\n};\r\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,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,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{resolve}from"path";import currentUserHasPermission from"../../../../server/utils/permissions/currentUserHasPermission.js";import deleteGlobalContent from"../../../../server/utils/global-content/deleteGlobalContent.js";const rootDir=resolve(import.meta.dirname,"../../../../app-public");export default async(s,e)=>{const r=s.cookies.session_token,[o,t]=await currentUserHasPermission(r,"system:globals:delete");if(o)return e.status(o.code).json({error:o.msg});if(!t)return e.status(403).json({error:"Insufficient permissions"});const{ids:n}=s.body||{};if(!n?.length)return e.status(400).json({error:"No IDs specified"});const[i,a]=await deleteGlobalContent({rootDir:rootDir,ids:n});if(i)return e.status(i.code).json({error:i.msg});e.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\DELETE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\globals\\DELETE.js","names":["resolve","currentUserHasPermission","deleteGlobalContent","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","ids","body","length","result"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport deleteGlobalContent from '../../../../server/utils/global-content/deleteGlobalContent.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:globals:delete');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { ids } = request.body || {};\r\n\r\n\tif(!ids?.length){\r\n\t\treturn response.status(400).json({ error: 'No IDs specified' });\r\n\t}\r\n\r\n\tconst [error, result] = await deleteGlobalContent({ rootDir, ids });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(result);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,0EAC9BC,wBAAyB,iEAEhC,MAAMC,QAAUH,oBAAoBI,QAAS,yCAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,yBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,IAAEA,GAAQZ,EAAQa,MAAQ,CAAC,EAEjC,IAAID,GAAKE,OACR,OAAOb,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,qBAG3C,MAAOA,EAAOK,SAAgBnB,oBAAoB,CAAEC,gBAASe,QAE7D,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 listGlobalContent from"../../../../server/utils/global-content/listGlobalContent.js";const rootDir=resolve(import.meta.dirname,"../../../../app-public");export default async(s,r)=>{const o=s.cookies.session_token,[t,e]=await currentUserHasPermission(o,"system:globals:read");if(t)return r.status(t.code).json({error:t.msg});if(!e)return r.status(403).json({error:"Insufficient permissions"});const[i,n]=await listGlobalContent({rootDir:rootDir});if(i)return r.status(i.code).json({error:i.msg});r.json(n)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\globals\\GET.js","names":["resolve","currentUserHasPermission","listGlobalContent","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport listGlobalContent from '../../../../server/utils/global-content/listGlobalContent.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:globals:read');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst [error, data] = await listGlobalContent({ rootDir });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(data);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,0EAC9BC,sBAAuB,+DAE9B,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,MAAOA,EAAOE,SAAchB,kBAAkB,CAAEC,kBAEhD,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 createGlobalContent from"../../../../server/utils/global-content/createGlobalContent.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:globals:create");if(t)return s.status(t.code).json({error:t.msg});if(!o)return s.status(403).json({error:"Insufficient permissions"});const{name:i,location:n,priority:a}=r.body;if(!i)return s.status(400).json({error:"Name is required"});if(!n)return s.status(400).json({error:"Location is required"});const[,u]=await getSession({token:e}),m=u?.user?.name||"",[c,l]=await createGlobalContent({rootDir:rootDir,name:i,location:n,priority:a,author:m});if(c)return s.status(c.code).json({error:c.msg});s.status(201).json(l)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\globals\\POST.js","names":["resolve","currentUserHasPermission","getSession","createGlobalContent","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","name","location","priority","body","sessionData","author","user","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport getSession from '../../../../server/utils/auth/getSession.js';\r\nimport createGlobalContent from '../../../../server/utils/global-content/createGlobalContent.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:globals:create');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { name, location, priority } = request.body;\r\n\r\n\tif(!name){\r\n\t\treturn response.status(400).json({ error: 'Name is required' });\r\n\t}\r\n\r\n\tif(!location){\r\n\t\treturn response.status(400).json({ error: 'Location is required' });\r\n\t}\r\n\r\n\tconst [, sessionData] = await getSession({ token });\r\n\tconst author = sessionData?.user?.name || '';\r\n\r\n\tconst [error, data] = await createGlobalContent({ rootDir, name, location, priority, author });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.status(201).json(data);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,0EAC9BC,eAAgB,qDAChBC,wBAAyB,iEAEhC,MAAMC,QAAUJ,oBAAoBK,QAAS,yCAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBZ,yBAAyBQ,EAAO,yBAEzE,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,SAAEA,EAAQC,SAAEA,GAAad,EAAQe,KAE7C,IAAIH,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,qBAG3C,IAAIG,EACH,OAAOZ,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,yBAG3C,MAAO,CAAEM,SAAqBrB,WAAW,CAAEO,UACrCe,EAASD,GAAaE,MAAMN,MAAQ,IAEnCF,EAAOS,SAAcvB,oBAAoB,CAAEC,gBAASe,OAAMC,WAAUC,WAAUG,WAErF,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 disableGlobalContent from"../../../../../server/utils/global-content/disableGlobalContent.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(s,r)=>{const o=s.cookies.session_token,[e,t]=await currentUserHasPermission(o,"system:globals:update");if(e)return r.status(e.code).json({error:e.msg});if(!t)return r.status(403).json({error:"Insufficient permissions"});const{id:i}=s.body||{};if(!i)return r.status(400).json({error:"Global content ID is required"});const[n,a]=await disableGlobalContent({rootDir:rootDir,id:i});if(n)return r.status(n.code).json({error:n.msg});r.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\disable\PUT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\globals\\disable\\PUT.js","names":["resolve","currentUserHasPermission","disableGlobalContent","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","id","body","result"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport disableGlobalContent from '../../../../../server/utils/global-content/disableGlobalContent.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:globals:update');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { id } = request.body || {};\r\n\r\n\tif(!id){\r\n\t\treturn response.status(400).json({ error: 'Global content ID is required' });\r\n\t}\r\n\r\n\tconst [error, result] = await disableGlobalContent({ rootDir, id });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(result);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,yBAA0B,qEAEjC,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,yBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,GAAEA,GAAOZ,EAAQa,MAAQ,CAAC,EAEhC,IAAID,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,kCAG3C,MAAOA,EAAOI,SAAgBlB,qBAAqB,CAAEC,gBAASe,OAE9D,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 enableGlobalContent from"../../../../../server/utils/global-content/enableGlobalContent.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:globals:update");if(o)return s.status(o.code).json({error:o.msg});if(!t)return s.status(403).json({error:"Insufficient permissions"});const{id:n}=r.body||{};if(!n)return s.status(400).json({error:"Global content ID is required"});const[i,a]=await enableGlobalContent({rootDir:rootDir,id:n});if(i)return s.status(i.code).json({error:i.msg});s.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\enable\PUT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\globals\\enable\\PUT.js","names":["resolve","currentUserHasPermission","enableGlobalContent","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","id","body","result"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport enableGlobalContent from '../../../../../server/utils/global-content/enableGlobalContent.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:globals:update');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { id } = request.body || {};\r\n\r\n\tif(!id){\r\n\t\treturn response.status(400).json({ error: 'Global content ID is required' });\r\n\t}\r\n\r\n\tconst [error, result] = await enableGlobalContent({ rootDir, id });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(result);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,wBAAyB,oEAEhC,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,yBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,GAAEA,GAAOZ,EAAQa,MAAQ,CAAC,EAEhC,IAAID,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,kCAG3C,MAAOA,EAAOI,SAAgBlB,oBAAoB,CAAEC,gBAASe,OAE7D,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 getGlobalContent from"../../../../../server/utils/global-content/getGlobalContent.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(r,s)=>{const o=r.cookies.session_token,[e,t]=await currentUserHasPermission(o,"system:globals:read");if(e)return s.status(e.code).json({error:e.msg});if(!t)return s.status(403).json({error:"Insufficient permissions"});const{id:n}=r.query;if(!n)return s.status(400).json({error:"Global content ID is required"});const[i,a]=await getGlobalContent({rootDir:rootDir,id:n});if(i)return s.status(i.code).json({error:i.msg});s.json(a)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\entry\GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\globals\\entry\\GET.js","names":["resolve","currentUserHasPermission","getGlobalContent","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","id","query","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport getGlobalContent from '../../../../../server/utils/global-content/getGlobalContent.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:globals:read');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { id } = request.query;\r\n\r\n\tif(!id){\r\n\t\treturn response.status(400).json({ error: 'Global content ID is required' });\r\n\t}\r\n\r\n\tconst [error, data] = await getGlobalContent({ rootDir, id });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(data);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,qBAAsB,iEAE7B,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,GAAEA,GAAOZ,EAAQa,MAEvB,IAAID,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,kCAG3C,MAAOA,EAAOI,SAAclB,iBAAiB,CAAEC,gBAASe,OAExD,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 updateGlobalContent from"../../../../../server/utils/global-content/updateGlobalContent.js";const rootDir=resolve(import.meta.dirname,"../../../../../app-public");export default async(r,o)=>{const s=r.cookies.session_token,[t,e]=await currentUserHasPermission(s,"system:globals:update");if(t)return o.status(t.code).json({error:t.msg});if(!e)return o.status(403).json({error:"Insufficient permissions"});const{id:i,name:n,location:a,priority:u,markup:m}=r.body;if(!i)return o.status(400).json({error:"Global content ID is required"});const[l,p]=await updateGlobalContent({rootDir:rootDir,id:i,name:n,location:a,priority:u,markup:m});if(l)return o.status(l.code).json({error:l.msg});o.json(p)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\globals\entry\PUT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\globals\\entry\\PUT.js","names":["resolve","currentUserHasPermission","updateGlobalContent","rootDir","dirname","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","id","name","location","priority","markup","body","data"],"sources":["0"],"sourcesContent":["import { resolve } from 'path';\r\nimport currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\r\nimport updateGlobalContent from '../../../../../server/utils/global-content/updateGlobalContent.js';\r\n\r\nconst rootDir = resolve(import.meta.dirname, '../../../../../app-public');\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:globals:update');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst { id, name, location, priority, markup } = request.body;\r\n\r\n\tif(!id){\r\n\t\treturn response.status(400).json({ error: 'Global content ID is required' });\r\n\t}\r\n\r\n\tconst [error, data] = await updateGlobalContent({ rootDir, id, name, location, priority, markup });\r\n\r\n\tif(error){\r\n\t\treturn response.status(error.code).json({ error: error.msg });\r\n\t}\r\n\r\n\tresponse.json(data);\r\n};\r\n"],"mappings":"OAASA,YAAe,cACjBC,6BAA8B,6EAC9BC,wBAAyB,oEAEhC,MAAMC,QAAUH,oBAAoBI,QAAS,4CAE9BC,MAAOC,EAASC,KAC9B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBX,yBAAyBO,EAAO,yBAEzE,GAAGG,EACF,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAME,GAAEA,EAAEC,KAAEA,EAAIC,SAAEA,EAAQC,SAAEA,EAAQC,OAAEA,GAAWhB,EAAQiB,KAEzD,IAAIL,EACH,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,kCAG3C,MAAOA,EAAOQ,SAActB,oBAAoB,CAAEC,gBAASe,KAAIC,OAAMC,WAAUC,WAAUC,WAEzF,GAAGN,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 deleteGroup from"../../../../server/utils/groups/deleteGroup.js";export default async(r,s)=>{const e=r.cookies.session_token,{names:t}=r.body;if(!t||!Array.isArray(t)||0===t.length)return s.status(400).json({error:"Names array is required"});const[n,o]=await currentUserHasPermission(e,"system:group:delete");if(n)return s.status(n.code).json({error:n.msg});if(!o)return s.status(403).json({error:"Insufficient permissions"});const i=t.filter(r=>{const s=r.includes(":")?r.split(":")[0]:null;return s&&"admin"!==s});if(i.length)return s.status(403).json({error:`Cannot delete non-admin groups: ${i.join(", ")}`});const u=[],a=[];for(const r of t){const[s,e]=await deleteGroup(r);s?a.push({name:r,error:s.msg}):u.push(e)}if(a.length>0)return s.status(207).json({deleted:u,errors:a});s.json({deleted:u})};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\DELETE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\groups\\DELETE.js","names":["currentUserHasPermission","deleteGroup","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';\r\nimport deleteGroup from '../../../../server/utils/groups/deleteGroup.js';\r\n\r\nexport default async (request, response) => {\r\n\tconst token = request.cookies.session_token;\r\n\tconst { names } = request.body;\r\n\r\n\tif(!names || !Array.isArray(names) || names.length === 0){\r\n\t\treturn response.status(400).json({ error: 'Names array is required' });\r\n\t}\r\n\r\n\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:delete');\r\n\r\n\tif(permError){\r\n\t\treturn response.status(permError.code).json({ error: permError.msg });\r\n\t}\r\n\r\n\tif(!hasPermission){\r\n\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\r\n\t}\r\n\r\n\tconst nonAdmin = names.filter(n => {\r\n\t\tconst owner = n.includes(':') ? n.split(':')[0] : null;\r\n\t\treturn owner && owner !== 'admin';\r\n\t});\r\n\tif(nonAdmin.length){\r\n\t\treturn response.status(403).json({ error: `Cannot delete non-admin groups: ${nonAdmin.join(', ')}` });\r\n\t}\r\n\r\n\tconst deleted = [];\r\n\tconst errors = [];\r\n\r\n\tfor(const name of names){\r\n\t\tconst [error, result] = await deleteGroup(name);\r\n\t\tif(error){\r\n\t\t\terrors.push({ name, error: error.msg });\r\n\t\t} else {\r\n\t\t\tdeleted.push(result);\r\n\t\t}\r\n\t}\r\n\r\n\tif(errors.length > 0){\r\n\t\treturn response.status(207).json({ deleted, errors });\r\n\t}\r\n\r\n\tresponse.json({ deleted });\r\n};\r\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,gBAAiB,gEAETC,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,uBAEzE,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,mCAAmCK,EAASM,KAAK,UAG5F,MAAMC,EAAU,GACVC,EAAS,GAEf,IAAI,MAAMC,KAAQrB,EAAM,CACvB,MAAOO,EAAOe,SAAgB7B,YAAY4B,GACvCd,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 listGroups from"../../../../server/utils/groups/listGroups.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 i=parseInt(s.query.limit)||50,n=parseInt(s.query.offset)||0,u=s.query.owner,[a,m]=await listGroups({limit:i,offset:n,owner:u});if(a)return r.status(a.code).json({error:a.msg});r.json(m)};
2
+ //# sourceMappingURL=C:\Users\dusti\dev\kempo\dist\kempo\api\groups\GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src\\kempo\\api\\groups\\GET.js","names":["currentUserHasPermission","listGroups","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';\r\nimport listGroups from '../../../../server/utils/groups/listGroups.js';\r\n\r\nexport default async (request, response) => {\r\n const token = request.cookies.session_token;\r\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:read');\r\n\r\n if(permError){\r\n return response.status(permError.code).json({ error: permError.msg });\r\n }\r\n\r\n if(!hasPermission){\r\n return response.status(403).json({ error: 'Insufficient permissions' });\r\n }\r\n\r\n const limit = parseInt(request.query.limit) || 50;\r\n const offset = parseInt(request.query.offset) || 0;\r\n const owner = request.query.owner;\r\n const [error, data] = await listGroups({ limit, offset, owner });\r\n\r\n if(error){\r\n return response.status(error.code).json({ error: error.msg });\r\n }\r\n\r\n response.json(data);\r\n};\r\n"],"mappings":"OAAOA,6BAA8B,0EAC9BC,eAAgB,+DAERC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,qBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,EAAQC,SAASb,EAAQc,MAAMF,QAAU,GACzCG,EAASF,SAASb,EAAQc,MAAMC,SAAW,EAC3CC,EAAQhB,EAAQc,MAAME,OACrBN,EAAOO,SAAcnB,WAAW,CAAEc,QAAOG,SAAQC,UAExD,GAAGN,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKQ","ignoreList":[]}