kempo 4.2.4 → 4.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (861) 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 +461 -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/migrations/0000_initial.sql +91 -0
  339. package/server/db/migrations/0001_soft_master_chief.sql +1 -0
  340. package/server/db/migrations/meta/0000_snapshot.json +588 -0
  341. package/server/db/migrations/meta/0001_snapshot.json +594 -0
  342. package/server/db/migrations/meta/_journal.json +20 -0
  343. package/server/db/schema.js +173 -0
  344. package/server/sdk.js +192 -0
  345. package/server/utils/admin-global-content/createAdminGlobalContent.js +43 -0
  346. package/server/utils/admin-global-content/deleteAdminGlobalContent.js +34 -0
  347. package/server/utils/admin-global-content/deleteAdminGlobalContentByOwner.js +26 -0
  348. package/server/utils/admin-global-content/disableAdminGlobalContent.js +33 -0
  349. package/server/utils/admin-global-content/enableAdminGlobalContent.js +33 -0
  350. package/server/utils/admin-global-content/getAdminGlobalContent.js +28 -0
  351. package/server/utils/admin-global-content/helpers.js +47 -0
  352. package/server/utils/admin-global-content/listAdminGlobalContent.js +20 -0
  353. package/server/utils/admin-global-content/updateAdminGlobalContent.js +41 -0
  354. package/server/utils/auth/changePassword.js +27 -0
  355. package/server/utils/auth/getSession.js +35 -0
  356. package/server/utils/auth/loginEmail.js +66 -0
  357. package/server/utils/auth/logout.js +16 -0
  358. package/server/utils/auth/registerEmail.js +105 -0
  359. package/server/utils/auth/requestPasswordReset.js +62 -0
  360. package/server/utils/auth/resetPassword.js +58 -0
  361. package/server/utils/auth/sendVerificationEmail.js +57 -0
  362. package/server/utils/auth/verifyEmail.js +46 -0
  363. package/server/utils/email/sendEmail.js +42 -0
  364. package/server/utils/email/sendEmailFromTemplate.js +45 -0
  365. package/server/utils/extensions/checkExtensionUpdate.js +56 -0
  366. package/server/utils/extensions/createTablesFromSchema.js +57 -0
  367. package/server/utils/extensions/disableExtension.js +26 -0
  368. package/server/utils/extensions/enableExtension.js +26 -0
  369. package/server/utils/extensions/getExtension.js +34 -0
  370. package/server/utils/extensions/installExtension.js +134 -0
  371. package/server/utils/extensions/listExtensions.js +36 -0
  372. package/server/utils/extensions/scopeCache.js +18 -0
  373. package/server/utils/extensions/uninstallExtension.js +88 -0
  374. package/server/utils/extensions/updateExtension.js +159 -0
  375. package/server/utils/fragments/createFragment.js +57 -0
  376. package/server/utils/fragments/deleteFragment.js +35 -0
  377. package/server/utils/fragments/disableFragment.js +37 -0
  378. package/server/utils/fragments/enableFragment.js +30 -0
  379. package/server/utils/fragments/getFragment.js +36 -0
  380. package/server/utils/fragments/listFragments.js +32 -0
  381. package/server/utils/fragments/moveFragment.js +54 -0
  382. package/server/utils/fragments/updateFragment.js +58 -0
  383. package/server/utils/fs/parseFrontmatter.js +13 -0
  384. package/server/utils/fs/scanDir.js +26 -0
  385. package/server/utils/global-content/createGlobalContent.js +58 -0
  386. package/server/utils/global-content/deleteGlobalContent.js +52 -0
  387. package/server/utils/global-content/disableGlobalContent.js +57 -0
  388. package/server/utils/global-content/enableGlobalContent.js +53 -0
  389. package/server/utils/global-content/getGlobalContent.js +28 -0
  390. package/server/utils/global-content/helpers.js +33 -0
  391. package/server/utils/global-content/listGlobalContent.js +24 -0
  392. package/server/utils/global-content/updateGlobalContent.js +56 -0
  393. package/server/utils/groups/addUserToGroup.js +46 -0
  394. package/server/utils/groups/createGroup.js +32 -0
  395. package/server/utils/groups/deleteGroup.js +29 -0
  396. package/server/utils/groups/getGroup.js +25 -0
  397. package/server/utils/groups/getGroupMembers.js +33 -0
  398. package/server/utils/groups/listGroups.js +21 -0
  399. package/server/utils/groups/removeUserFromGroup.js +31 -0
  400. package/server/utils/groups/updateGroup.js +54 -0
  401. package/server/utils/hooks/createHook.js +29 -0
  402. package/server/utils/hooks/deleteHook.js +19 -0
  403. package/server/utils/hooks/getHook.js +19 -0
  404. package/server/utils/hooks/listHooks.js +30 -0
  405. package/server/utils/hooks/triggerHook.js +61 -0
  406. package/server/utils/hooks/updateHook.js +27 -0
  407. package/server/utils/pages/createPage.js +60 -0
  408. package/server/utils/pages/deletePage.js +35 -0
  409. package/server/utils/pages/disablePage.js +37 -0
  410. package/server/utils/pages/enablePage.js +30 -0
  411. package/server/utils/pages/getPage.js +53 -0
  412. package/server/utils/pages/listDirectories.js +18 -0
  413. package/server/utils/pages/listPages.js +40 -0
  414. package/server/utils/pages/listTemplates.js +52 -0
  415. package/server/utils/pages/movePage.js +54 -0
  416. package/server/utils/pages/updatePage.js +74 -0
  417. package/server/utils/permissions/addPermissionToGroup.js +43 -0
  418. package/server/utils/permissions/createPermission.js +43 -0
  419. package/server/utils/permissions/currentUserHasAllPermissions.js +24 -0
  420. package/server/utils/permissions/currentUserHasPermission.js +24 -0
  421. package/server/utils/permissions/currentUserHasSomePermissions.js +24 -0
  422. package/server/utils/permissions/deletePermission.js +29 -0
  423. package/server/utils/permissions/getAllPermissions.js +21 -0
  424. package/server/utils/permissions/getPermissionsForGroups.js +26 -0
  425. package/server/utils/permissions/getUserGroups.js +31 -0
  426. package/server/utils/permissions/getUserPermission.js +30 -0
  427. package/server/utils/permissions/getUserPermissions.js +16 -0
  428. package/server/utils/permissions/removePermissionFromGroup.js +31 -0
  429. package/server/utils/permissions/updatePermission.js +33 -0
  430. package/server/utils/permissions/userHasAllPermissions.js +31 -0
  431. package/server/utils/permissions/userHasPermission.js +13 -0
  432. package/server/utils/permissions/userHasSomePermissions.js +31 -0
  433. package/server/utils/sessions/createSession.js +36 -0
  434. package/server/utils/sessions/deleteExpiredUserSessions.js +22 -0
  435. package/server/utils/sessions/deleteSession.js +16 -0
  436. package/server/utils/sessions/deleteUserSessions.js +16 -0
  437. package/server/utils/sessions/getSessionById.js +21 -0
  438. package/server/utils/sessions/getSessionByToken.js +21 -0
  439. package/server/utils/sessions/getSessions.js +19 -0
  440. package/server/utils/sessions/getUserSessions.js +30 -0
  441. package/server/utils/settings/deleteSetting.js +24 -0
  442. package/server/utils/settings/getPublicSettings.js +22 -0
  443. package/server/utils/settings/getSetting.js +25 -0
  444. package/server/utils/settings/getSettingWithMetadata.js +33 -0
  445. package/server/utils/settings/getSettingsByOwner.js +23 -0
  446. package/server/utils/settings/helpers.js +29 -0
  447. package/server/utils/settings/listSettings.js +25 -0
  448. package/server/utils/settings/setSetting.js +49 -0
  449. package/server/utils/templates/createTemplate.js +71 -0
  450. package/server/utils/templates/deleteTemplate.js +35 -0
  451. package/server/utils/templates/disableTemplate.js +37 -0
  452. package/server/utils/templates/enableTemplate.js +30 -0
  453. package/server/utils/templates/getTemplate.js +30 -0
  454. package/server/utils/templates/moveTemplate.js +54 -0
  455. package/server/utils/templates/updateTemplate.js +46 -0
  456. package/server/utils/users/createUser.js +60 -0
  457. package/server/utils/users/deleteUser.js +19 -0
  458. package/server/utils/users/findUsersByEmail.js +35 -0
  459. package/server/utils/users/findUsersByName.js +35 -0
  460. package/server/utils/users/getUserByEmail.js +26 -0
  461. package/server/utils/users/getUserById.js +27 -0
  462. package/server/utils/users/getUsers.js +26 -0
  463. package/server/utils/users/searchUsers.js +53 -0
  464. package/server/utils/users/updateUser.js +38 -0
  465. package/.gitattributes +0 -2
  466. package/LICENSE +0 -21
  467. package/dist/components/Accordion.js +0 -1
  468. package/dist/components/Card.js +0 -1
  469. package/dist/components/Collapsible.js +0 -1
  470. package/dist/components/Component.js +0 -1
  471. package/dist/components/ContentSlider.js +0 -1
  472. package/dist/components/Dialog.js +0 -1
  473. package/dist/components/DirectoryViewer.js +0 -1
  474. package/dist/components/FocusCapture.js +0 -1
  475. package/dist/components/Icon.js +0 -1
  476. package/dist/components/Import.js +0 -1
  477. package/dist/components/LazyComponent.js +0 -1
  478. package/dist/components/PersistantCollapsible.js +0 -1
  479. package/dist/components/PhotoViewer.js +0 -1
  480. package/dist/components/ReactiveComponent.js +0 -1
  481. package/dist/components/ReactiveLazyComponent.js +0 -1
  482. package/dist/components/Resize.js +0 -1
  483. package/dist/components/Search.js +0 -1
  484. package/dist/components/ShowMore.js +0 -1
  485. package/dist/components/SideMenu.js +0 -1
  486. package/dist/components/Sortable.js +0 -1
  487. package/dist/components/Split.js +0 -1
  488. package/dist/components/Stacks.js +0 -1
  489. package/dist/components/Table.js +0 -1
  490. package/dist/components/Tabs.js +0 -1
  491. package/dist/components/Tags.js +0 -1
  492. package/dist/components/ThemeSwitcher.js +0 -1
  493. package/dist/components/Timestamp.js +0 -1
  494. package/dist/components/Toast.js +0 -1
  495. package/dist/components/Toggle.js +0 -1
  496. package/dist/components/tableControls/DeleteRecord.js +0 -1
  497. package/dist/components/tableControls/DeleteSelected.js +0 -1
  498. package/dist/components/tableControls/Edit.js +0 -1
  499. package/dist/components/tableControls/ExportCSV.js +0 -1
  500. package/dist/components/tableControls/ExportJson.js +0 -1
  501. package/dist/components/tableControls/FieldSortHide.js +0 -1
  502. package/dist/components/tableControls/Filters.js +0 -1
  503. package/dist/components/tableControls/FirstPage.js +0 -1
  504. package/dist/components/tableControls/HiddenCount.js +0 -1
  505. package/dist/components/tableControls/Hide.js +0 -1
  506. package/dist/components/tableControls/LastPage.js +0 -1
  507. package/dist/components/tableControls/NextPage.js +0 -1
  508. package/dist/components/tableControls/PageSelect.js +0 -1
  509. package/dist/components/tableControls/PageSize.js +0 -1
  510. package/dist/components/tableControls/PrevPage.js +0 -1
  511. package/dist/components/tableControls/Search.js +0 -1
  512. package/dist/components/tableControls/SelectCount.js +0 -1
  513. package/dist/components/tableControls/ShowAll.js +0 -1
  514. package/dist/components/tableControls/ShowHideFields.js +0 -1
  515. package/dist/components/tableControls/TableControl.js +0 -1
  516. package/dist/kempo-hljs.css +0 -1
  517. package/dist/kempo-styles.css +0 -1
  518. package/dist/kempo-vars.css +0 -1
  519. package/dist/utils/Server.js +0 -1
  520. package/dist/utils/cli.js +0 -1
  521. package/dist/utils/cookie.js +0 -1
  522. package/dist/utils/debounce.js +0 -1
  523. package/dist/utils/drag.js +0 -1
  524. package/dist/utils/element.js +0 -1
  525. package/dist/utils/files.js +0 -1
  526. package/dist/utils/formatTimestamp.js +0 -1
  527. package/dist/utils/fs-utils.js +0 -1
  528. package/dist/utils/fuzzyMatch.js +0 -1
  529. package/dist/utils/getPreferredTheme.js +0 -1
  530. package/dist/utils/loadCss.js +0 -1
  531. package/dist/utils/loadScript.js +0 -1
  532. package/dist/utils/minify.js +0 -1
  533. package/dist/utils/object.js +0 -1
  534. package/dist/utils/raf.js +0 -1
  535. package/dist/utils/string.js +0 -1
  536. package/dist/utils/toFunction.js +0 -1
  537. package/dist/utils/type.js +0 -1
  538. package/dist/utils/waitFrames.js +0 -1
  539. package/dist/utils/watchDirectoryHandle.js +0 -1
  540. package/dist/utils/watchWindowSize.js +0 -1
  541. package/docs/components/_template.html +0 -77
  542. package/docs/components/accordion.html +0 -124
  543. package/docs/components/card.html +0 -93
  544. package/docs/components/component.html +0 -92
  545. package/docs/components/content-slider.html +0 -195
  546. package/docs/components/dialog.html +0 -247
  547. package/docs/components/directory-viewer.html +0 -92
  548. package/docs/components/focus-capture.html +0 -70
  549. package/docs/components/icon.html +0 -160
  550. package/docs/components/import.html +0 -79
  551. package/docs/components/lazy-component.html +0 -86
  552. package/docs/components/reactive-component.html +0 -71
  553. package/docs/components/reactive-lazy-component.html +0 -71
  554. package/docs/components/resize.html +0 -154
  555. package/docs/components/search.html +0 -104
  556. package/docs/components/show-more.html +0 -125
  557. package/docs/components/side-menu.html +0 -148
  558. package/docs/components/sortable.html +0 -98
  559. package/docs/components/split.html +0 -128
  560. package/docs/components/table.html +0 -314
  561. package/docs/components/tableControls.html +0 -79
  562. package/docs/components/tableCustomFields.html +0 -115
  563. package/docs/components/tableFetchRecords.html +0 -116
  564. package/docs/components/tableFieldSortHide.html +0 -77
  565. package/docs/components/tablePagination.html +0 -102
  566. package/docs/components/tableRecordEditing.html +0 -146
  567. package/docs/components/tableRecordFiltering.html +0 -77
  568. package/docs/components/tableRecordHiding.html +0 -82
  569. package/docs/components/tableRecordSearching.html +0 -77
  570. package/docs/components/tableRecordSelection.html +0 -77
  571. package/docs/components/tableRowControls.html +0 -80
  572. package/docs/components/tableSorting.html +0 -75
  573. package/docs/components/tabs.html +0 -165
  574. package/docs/components/tags.html +0 -96
  575. package/docs/components/theme-switcher.html +0 -76
  576. package/docs/components/timestamp.html +0 -88
  577. package/docs/components/toast.html +0 -330
  578. package/docs/components/toggle.html +0 -157
  579. package/docs/icons/add.svg +0 -1
  580. package/docs/icons/arrow-back.svg +0 -1
  581. package/docs/icons/arrow-down-double.svg +0 -1
  582. package/docs/icons/arrow-down.svg +0 -1
  583. package/docs/icons/arrow-forward.svg +0 -1
  584. package/docs/icons/arrow-up-double.svg +0 -1
  585. package/docs/icons/arrow-up.svg +0 -1
  586. package/docs/icons/cards.svg +0 -1
  587. package/docs/icons/check.svg +0 -1
  588. package/docs/icons/chevron-left.svg +0 -1
  589. package/docs/icons/chevron-right.svg +0 -1
  590. package/docs/icons/close.svg +0 -2
  591. package/docs/icons/compare.svg +0 -1
  592. package/docs/icons/delete.svg +0 -1
  593. package/docs/icons/drag-handle.svg +0 -1
  594. package/docs/icons/drawing2.svg +0 -124
  595. package/docs/icons/edit.svg +0 -1
  596. package/docs/icons/error.svg +0 -1
  597. package/docs/icons/export-file.svg +0 -1
  598. package/docs/icons/file-text.svg +0 -1
  599. package/docs/icons/file.svg +0 -1
  600. package/docs/icons/filter-off.svg +0 -1
  601. package/docs/icons/filter.svg +0 -1
  602. package/docs/icons/first.svg +0 -1
  603. package/docs/icons/folder-clear.svg +0 -1
  604. package/docs/icons/folder-create.svg +0 -1
  605. package/docs/icons/folder-open.svg +0 -1
  606. package/docs/icons/folder.svg +0 -1
  607. package/docs/icons/hide.svg +0 -1
  608. package/docs/icons/image.svg +0 -1
  609. package/docs/icons/label-add.svg +0 -1
  610. package/docs/icons/label.svg +0 -1
  611. package/docs/icons/last.svg +0 -1
  612. package/docs/icons/menu.svg +0 -1
  613. package/docs/icons/mode-auto.svg +0 -1
  614. package/docs/icons/mode-dark.svg +0 -1
  615. package/docs/icons/mode-light.svg +0 -1
  616. package/docs/icons/open-in-browser.svg +0 -1
  617. package/docs/icons/pause.svg +0 -1
  618. package/docs/icons/play.svg +0 -1
  619. package/docs/icons/refresh.svg +0 -1
  620. package/docs/icons/remove.svg +0 -1
  621. package/docs/icons/save.svg +0 -1
  622. package/docs/icons/search.svg +0 -1
  623. package/docs/icons/settings.svg +0 -1
  624. package/docs/icons/storage.svg +0 -1
  625. package/docs/icons/table-visibility.svg +0 -1
  626. package/docs/icons/tag.svg +0 -1
  627. package/docs/icons/tools.svg +0 -1
  628. package/docs/icons/trash-x.svg +0 -1
  629. package/docs/icons/warning.svg +0 -1
  630. package/docs/index.html +0 -21
  631. package/docs/js/nav.inc.js +0 -4
  632. package/docs/kempo/components/Accordion.js +0 -1
  633. package/docs/kempo/components/Card.js +0 -1
  634. package/docs/kempo/components/Collapsible.js +0 -1
  635. package/docs/kempo/components/Component.js +0 -1
  636. package/docs/kempo/components/ContentSlider.js +0 -1
  637. package/docs/kempo/components/Dialog.js +0 -1
  638. package/docs/kempo/components/DirectoryViewer.js +0 -1
  639. package/docs/kempo/components/FocusCapture.js +0 -1
  640. package/docs/kempo/components/Icon.js +0 -1
  641. package/docs/kempo/components/Import.js +0 -1
  642. package/docs/kempo/components/LazyComponent.js +0 -1
  643. package/docs/kempo/components/PersistantCollapsible.js +0 -1
  644. package/docs/kempo/components/PhotoViewer.js +0 -1
  645. package/docs/kempo/components/ReactiveComponent.js +0 -1
  646. package/docs/kempo/components/ReactiveLazyComponent.js +0 -1
  647. package/docs/kempo/components/Resize.js +0 -1
  648. package/docs/kempo/components/Search.js +0 -1
  649. package/docs/kempo/components/ShowMore.js +0 -1
  650. package/docs/kempo/components/SideMenu.js +0 -1
  651. package/docs/kempo/components/Sortable.js +0 -1
  652. package/docs/kempo/components/Split.js +0 -1
  653. package/docs/kempo/components/Stacks.js +0 -1
  654. package/docs/kempo/components/Table.js +0 -1
  655. package/docs/kempo/components/Tabs.js +0 -1
  656. package/docs/kempo/components/Tags.js +0 -1
  657. package/docs/kempo/components/ThemeSwitcher.js +0 -1
  658. package/docs/kempo/components/Timestamp.js +0 -1
  659. package/docs/kempo/components/Toast.js +0 -1
  660. package/docs/kempo/components/Toggle.js +0 -1
  661. package/docs/kempo/components/tableControls/DeleteRecord.js +0 -1
  662. package/docs/kempo/components/tableControls/DeleteSelected.js +0 -1
  663. package/docs/kempo/components/tableControls/Edit.js +0 -1
  664. package/docs/kempo/components/tableControls/ExportCSV.js +0 -1
  665. package/docs/kempo/components/tableControls/ExportJson.js +0 -1
  666. package/docs/kempo/components/tableControls/FieldSortHide.js +0 -1
  667. package/docs/kempo/components/tableControls/Filters.js +0 -1
  668. package/docs/kempo/components/tableControls/FirstPage.js +0 -1
  669. package/docs/kempo/components/tableControls/HiddenCount.js +0 -1
  670. package/docs/kempo/components/tableControls/Hide.js +0 -1
  671. package/docs/kempo/components/tableControls/LastPage.js +0 -1
  672. package/docs/kempo/components/tableControls/NextPage.js +0 -1
  673. package/docs/kempo/components/tableControls/PageSelect.js +0 -1
  674. package/docs/kempo/components/tableControls/PageSize.js +0 -1
  675. package/docs/kempo/components/tableControls/PrevPage.js +0 -1
  676. package/docs/kempo/components/tableControls/Search.js +0 -1
  677. package/docs/kempo/components/tableControls/SelectCount.js +0 -1
  678. package/docs/kempo/components/tableControls/ShowAll.js +0 -1
  679. package/docs/kempo/components/tableControls/ShowHideFields.js +0 -1
  680. package/docs/kempo/components/tableControls/TableControl.js +0 -1
  681. package/docs/kempo/index.js +0 -1
  682. package/docs/kempo/kempo-hljs.css +0 -1
  683. package/docs/kempo/kempo-styles.css +0 -1
  684. package/docs/kempo/kempo-vars.css +0 -1
  685. package/docs/kempo/utils/Server.js +0 -1
  686. package/docs/kempo/utils/cli.js +0 -1
  687. package/docs/kempo/utils/cookie.js +0 -1
  688. package/docs/kempo/utils/debounce.js +0 -1
  689. package/docs/kempo/utils/drag.js +0 -1
  690. package/docs/kempo/utils/element.js +0 -1
  691. package/docs/kempo/utils/files.js +0 -1
  692. package/docs/kempo/utils/formatTimestamp.js +0 -1
  693. package/docs/kempo/utils/fs-utils.js +0 -1
  694. package/docs/kempo/utils/fuzzyMatch.js +0 -1
  695. package/docs/kempo/utils/getPreferredTheme.js +0 -1
  696. package/docs/kempo/utils/loadCss.js +0 -1
  697. package/docs/kempo/utils/loadScript.js +0 -1
  698. package/docs/kempo/utils/minify.js +0 -1
  699. package/docs/kempo/utils/object.js +0 -1
  700. package/docs/kempo/utils/raf.js +0 -1
  701. package/docs/kempo/utils/string.js +0 -1
  702. package/docs/kempo/utils/toFunction.js +0 -1
  703. package/docs/kempo/utils/type.js +0 -1
  704. package/docs/kempo/utils/waitFrames.js +0 -1
  705. package/docs/kempo/utils/watchDirectoryHandle.js +0 -1
  706. package/docs/kempo/utils/watchWindowSize.js +0 -1
  707. package/docs/nav.inc.html +0 -74
  708. package/docs/search.json +0 -400
  709. package/docs/styles/_template.html +0 -26
  710. package/docs/styles/borders-spacing.html +0 -197
  711. package/docs/styles/buttons.html +0 -117
  712. package/docs/styles/colors.html +0 -69
  713. package/docs/styles/displays-layouts.html +0 -162
  714. package/docs/styles/embed-1.html +0 -40
  715. package/docs/styles/inputs.html +0 -93
  716. package/docs/styles/tables.html +0 -147
  717. package/docs/styles/typography.html +0 -120
  718. package/docs/utils/Server.html +0 -119
  719. package/docs/utils/_template.html +0 -77
  720. package/docs/utils/cli.html +0 -86
  721. package/docs/utils/cookie.html +0 -89
  722. package/docs/utils/debounce.html +0 -63
  723. package/docs/utils/drag.html +0 -87
  724. package/docs/utils/element.html +0 -126
  725. package/docs/utils/format-timestamp.html +0 -66
  726. package/docs/utils/fuzzy-match.html +0 -60
  727. package/icons/add.svg +0 -1
  728. package/icons/arrow-back.svg +0 -1
  729. package/icons/arrow-down-double.svg +0 -1
  730. package/icons/arrow-down.svg +0 -1
  731. package/icons/arrow-forward.svg +0 -1
  732. package/icons/arrow-up-double.svg +0 -1
  733. package/icons/arrow-up.svg +0 -1
  734. package/icons/cards.svg +0 -1
  735. package/icons/check.svg +0 -1
  736. package/icons/chevron-left.svg +0 -1
  737. package/icons/chevron-right.svg +0 -1
  738. package/icons/close.svg +0 -2
  739. package/icons/compare.svg +0 -1
  740. package/icons/delete.svg +0 -1
  741. package/icons/drag-handle.svg +0 -1
  742. package/icons/drawing2.svg +0 -124
  743. package/icons/edit.svg +0 -1
  744. package/icons/error.svg +0 -1
  745. package/icons/export-file.svg +0 -1
  746. package/icons/file-text.svg +0 -1
  747. package/icons/file.svg +0 -1
  748. package/icons/filter-off.svg +0 -1
  749. package/icons/filter.svg +0 -1
  750. package/icons/first.svg +0 -1
  751. package/icons/folder-clear.svg +0 -1
  752. package/icons/folder-create.svg +0 -1
  753. package/icons/folder-open.svg +0 -1
  754. package/icons/folder.svg +0 -1
  755. package/icons/hide.svg +0 -1
  756. package/icons/image.svg +0 -1
  757. package/icons/label-add.svg +0 -1
  758. package/icons/label.svg +0 -1
  759. package/icons/last.svg +0 -1
  760. package/icons/menu.svg +0 -1
  761. package/icons/mode-auto.svg +0 -1
  762. package/icons/mode-dark.svg +0 -1
  763. package/icons/mode-light.svg +0 -1
  764. package/icons/open-in-browser.svg +0 -1
  765. package/icons/pause.svg +0 -1
  766. package/icons/play.svg +0 -1
  767. package/icons/refresh.svg +0 -1
  768. package/icons/remove.svg +0 -1
  769. package/icons/save.svg +0 -1
  770. package/icons/search.svg +0 -1
  771. package/icons/settings.svg +0 -1
  772. package/icons/show.svg +0 -1
  773. package/icons/storage.svg +0 -1
  774. package/icons/table-visibility.svg +0 -1
  775. package/icons/tag.svg +0 -1
  776. package/icons/tools.svg +0 -1
  777. package/icons/trash-x.svg +0 -1
  778. package/icons/warning.svg +0 -1
  779. package/scripts/build.js +0 -154
  780. package/scripts/docs.js +0 -47
  781. package/src/components/Accordion.js +0 -182
  782. package/src/components/Card.js +0 -62
  783. package/src/components/Collapsible.js +0 -104
  784. package/src/components/Component.js +0 -110
  785. package/src/components/ContentSlider.js +0 -192
  786. package/src/components/Dialog.js +0 -338
  787. package/src/components/DirectoryViewer.js +0 -363
  788. package/src/components/FocusCapture.js +0 -31
  789. package/src/components/Icon.js +0 -119
  790. package/src/components/Import.js +0 -48
  791. package/src/components/LazyComponent.js +0 -65
  792. package/src/components/PersistantCollapsible.js +0 -44
  793. package/src/components/PhotoViewer.js +0 -358
  794. package/src/components/ReactiveComponent.js +0 -11
  795. package/src/components/ReactiveLazyComponent.js +0 -11
  796. package/src/components/Resize.js +0 -168
  797. package/src/components/Search.js +0 -140
  798. package/src/components/ShowMore.js +0 -102
  799. package/src/components/SideMenu.js +0 -150
  800. package/src/components/Sortable.js +0 -169
  801. package/src/components/Split.js +0 -164
  802. package/src/components/Table.js +0 -935
  803. package/src/components/Tabs.js +0 -349
  804. package/src/components/Tags.js +0 -224
  805. package/src/components/ThemeSwitcher.js +0 -100
  806. package/src/components/Timestamp.js +0 -28
  807. package/src/components/Toast.js +0 -424
  808. package/src/components/Toggle.js +0 -137
  809. package/src/components/tableControls/DeleteRecord.js +0 -43
  810. package/src/components/tableControls/DeleteSelected.js +0 -70
  811. package/src/components/tableControls/Edit.js +0 -84
  812. package/src/components/tableControls/ExportCSV.js +0 -91
  813. package/src/components/tableControls/ExportJson.js +0 -62
  814. package/src/components/tableControls/FieldSortHide.js +0 -77
  815. package/src/components/tableControls/Filters.js +0 -129
  816. package/src/components/tableControls/FirstPage.js +0 -69
  817. package/src/components/tableControls/HiddenCount.js +0 -37
  818. package/src/components/tableControls/Hide.js +0 -40
  819. package/src/components/tableControls/LastPage.js +0 -67
  820. package/src/components/tableControls/NextPage.js +0 -69
  821. package/src/components/tableControls/PageSelect.js +0 -89
  822. package/src/components/tableControls/PageSize.js +0 -70
  823. package/src/components/tableControls/PrevPage.js +0 -69
  824. package/src/components/tableControls/Search.js +0 -49
  825. package/src/components/tableControls/SelectCount.js +0 -42
  826. package/src/components/tableControls/ShowAll.js +0 -37
  827. package/src/components/tableControls/TableControl.js +0 -51
  828. package/src/kempo-hljs.css +0 -146
  829. package/src/kempo-styles.css +0 -952
  830. package/src/kempo-vars.css +0 -159
  831. package/src/utils/Server.js +0 -189
  832. package/src/utils/cli.js +0 -119
  833. package/src/utils/cookie.js +0 -20
  834. package/src/utils/debounce.js +0 -9
  835. package/src/utils/drag.js +0 -74
  836. package/src/utils/element.js +0 -81
  837. package/src/utils/formatTimestamp.js +0 -27
  838. package/src/utils/fs-utils.js +0 -41
  839. package/src/utils/fuzzyMatch.js +0 -60
  840. package/src/utils/getPreferredTheme.js +0 -1
  841. package/src/utils/loadCss.js +0 -10
  842. package/src/utils/loadScript.js +0 -10
  843. package/src/utils/object.js +0 -198
  844. package/src/utils/raf.js +0 -10
  845. package/src/utils/string.js +0 -66
  846. package/src/utils/toFunction.js +0 -24
  847. package/src/utils/type.js +0 -13
  848. package/src/utils/waitFrames.js +0 -17
  849. package/src/utils/watchDirectoryHandle.js +0 -18
  850. package/src/utils/watchWindowSize.js +0 -15
  851. package/test/components/SuiteList.js +0 -26
  852. package/test/components/Test.js +0 -357
  853. package/test/index.html +0 -49
  854. package/test/index.js +0 -36
  855. package/test/suite.html +0 -45
  856. package/test/suites.inc.html +0 -4
  857. package/test/tests/components/Component.test.js +0 -138
  858. package/test/tests/utils/cli.test.js +0 -113
  859. package/test/tests/utils/cookie.test.js +0 -87
  860. package/test/tests/utils/debounce.test.js +0 -71
  861. /package/{docs/icons/show.svg → dist/admin/icons/visibility.svg} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/[userid]/GET.js","names":["currentUserHasPermission","getUserById","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","user"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getUserById from '../../../../../server/utils/users/getUserById.js';\n\nexport default async (request, response) => {\n const token = request.cookies.session_token;\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:read');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'Insufficient permissions' });\n }\n\n const { userid } = request.params;\n const [error, user] = await getUserById(userid);\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n response.json(user);\n};\n"],"mappings":"OAAOA,6BAA8B,6EAC9BC,gBAAiB,kEAETC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,oBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,OAAEA,GAAWZ,EAAQa,QACpBH,EAAOI,SAAchB,YAAYc,GAExC,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 removeUserFromGroup from"../../../../../../server/utils/groups/removeUserFromGroup.js";export default async(r,s)=>{const e=r.cookies.session_token,[o,t]=await currentUserHasPermission(e,"system:group:update");if(o)return s.status(o.code).json({error:o.msg});if(!t)return s.status(403).json({error:"Insufficient permissions"});const{userid:i}=r.params,{groupName:n}=r.body;if(!n)return s.status(400).json({error:"Group name is required"});const[u,m]=await removeUserFromGroup(i,n);if(u)return s.status(u.code).json({error:u.msg});s.json(m)};
2
+ //# sourceMappingURL=DELETE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/[userid]/groups/DELETE.js","names":["currentUserHasPermission","removeUserFromGroup","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","groupName","body","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport removeUserFromGroup from '../../../../../../server/utils/groups/removeUserFromGroup.js';\n\nexport default async (request, response) => {\n const token = request.cookies.session_token;\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:update');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'Insufficient permissions' });\n }\n\n const { userid } = request.params;\n const { groupName } = request.body;\n\n if(!groupName){\n return response.status(400).json({ error: 'Group name is required' });\n }\n\n const [error, result] = await removeUserFromGroup(userid, groupName);\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n response.json(result);\n};\n"],"mappings":"OAAOA,6BAA8B,gFAC9BC,wBAAyB,8EAEjBC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,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,OAAEA,GAAWZ,EAAQa,QACrBC,UAAEA,GAAcd,EAAQe,KAE9B,IAAID,EACF,OAAOb,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,2BAG5C,MAAOA,EAAOM,SAAgBlB,oBAAoBc,EAAQE,GAE1D,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 getUserGroups from"../../../../../../server/utils/permissions/getUserGroups.js";export default async(s,r)=>{const e=s.cookies.session_token,[t,o]=await currentUserHasPermission(e,"system:group:read");if(t)return r.status(t.code).json({error:t.msg});if(!o)return r.status(403).json({error:"Insufficient permissions"});const{userid:i}=s.params,[n,u]=await getUserGroups(i);if(n)return r.status(n.code).json({error:n.msg});const a=parseInt(s.query.limit)||50,m=parseInt(s.query.offset)||0,p=u.length;r.json({groups:u.slice(m,m+a),total:p,limit:a,offset:m})};
2
+ //# sourceMappingURL=GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/[userid]/groups/GET.js","names":["currentUserHasPermission","getUserGroups","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","allGroups","limit","parseInt","query","offset","total","length","groups","slice"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getUserGroups from '../../../../../../server/utils/permissions/getUserGroups.js';\n\nexport default async (request, response) => {\n const token = request.cookies.session_token;\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:read');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'Insufficient permissions' });\n }\n\n const { userid } = request.params;\n const [error, allGroups] = await getUserGroups(userid);\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n const limit = parseInt(request.query.limit) || 50;\n const offset = parseInt(request.query.offset) || 0;\n const total = allGroups.length;\n response.json({ groups: allGroups.slice(offset, offset + limit), total, limit, offset });\n};\n"],"mappings":"OAAOA,6BAA8B,gFAC9BC,kBAAmB,6EAEXC,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,OAAEA,GAAWZ,EAAQa,QACpBH,EAAOI,SAAmBhB,cAAcc,GAE/C,GAAGF,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzD,MAAMI,EAAQC,SAAShB,EAAQiB,MAAMF,QAAU,GACzCG,EAASF,SAAShB,EAAQiB,MAAMC,SAAW,EAC3CC,EAAQL,EAAUM,OACxBnB,EAASQ,KAAK,CAAEY,OAAQP,EAAUQ,MAAMJ,EAAQA,EAASH,GAAQI,QAAOJ,QAAOG","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import addUserToGroup from"../../../../../../server/utils/groups/addUserToGroup.js";export default async(r,s)=>{const e=r.cookies.session_token,[o,t]=await currentUserHasPermission(e,"system:group:update");if(o)return s.status(o.code).json({error:o.msg});if(!t)return s.status(403).json({error:"Insufficient permissions"});const{userid:i}=r.params,{groupName:n}=r.body;if(!n)return s.status(400).json({error:"Group name is required"});const[u,a]=await addUserToGroup(i,n);if(u)return s.status(u.code).json({error:u.msg});s.json(a)};
2
+ //# sourceMappingURL=POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/[userid]/groups/POST.js","names":["currentUserHasPermission","addUserToGroup","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","groupName","body","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport addUserToGroup from '../../../../../../server/utils/groups/addUserToGroup.js';\n\nexport default async (request, response) => {\n const token = request.cookies.session_token;\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:group:update');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'Insufficient permissions' });\n }\n\n const { userid } = request.params;\n const { groupName } = request.body;\n\n if(!groupName){\n return response.status(400).json({ error: 'Group name is required' });\n }\n\n const [error, result] = await addUserToGroup(userid, groupName);\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n response.json(result);\n};\n"],"mappings":"OAAOA,6BAA8B,gFAC9BC,mBAAoB,yEAEZC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,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,OAAEA,GAAWZ,EAAQa,QACrBC,UAAEA,GAAcd,EAAQe,KAE9B,IAAID,EACF,OAAOb,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,2BAG5C,MAAOA,EAAOM,SAAgBlB,eAAec,EAAQE,GAErD,GAAGJ,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKO","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import getSession from"../../../../../../server/utils/auth/getSession.js";import getUserPermission from"../../../../../../server/utils/permissions/getUserPermission.js";import getUserPermissions from"../../../../../../server/utils/permissions/getUserPermissions.js";import userHasPermission from"../../../../../../server/utils/permissions/userHasPermission.js";export default async(s,r)=>{try{const e=s.cookies.session_token,[i,o]=await getSession({token:e});if(i||!o||!o.user)return r.status(401).json({error:"Unauthorized"});const{userid:t}=s.params,n="current"===t?o.user.id:t;if("current"!==t){const[s,e]=await userHasPermission(o.user.id,"system:permissions:read");if(s||!e)return r.status(403).json({error:"Forbidden"})}const m=s.query.permission;if(m){const[s,e]=await getUserPermission(n,m);return s?r.status(s.code).json({error:s.msg}):r.json({hasPermission:e})}const[u,a]=await getUserPermissions(n);if(u)return r.status(u.code).json({error:u.msg});r.json({permissions:a})}catch(s){console.error("Get user permission error:",s),r.status(500).json({error:s.message})}};
2
+ //# sourceMappingURL=GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/[userid]/permissions/GET.js","names":["getSession","getUserPermission","getUserPermissions","userHasPermission","async","request","response","sessionToken","cookies","session_token","sessionError","session","token","user","status","json","error","userid","params","targetUserId","id","cPermError","cHasPerm","permissionName","query","permission","permError","hasPermission","code","msg","permsError","userPermissions","permissions","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../server/utils/auth/getSession.js';\nimport getUserPermission from '../../../../../../server/utils/permissions/getUserPermission.js';\nimport getUserPermissions from '../../../../../../server/utils/permissions/getUserPermissions.js';\nimport userHasPermission from '../../../../../../server/utils/permissions/userHasPermission.js';\n\nexport default async (request, response) => {\n try {\n /*\n Are they logged in?\n */\n const sessionToken = request.cookies.session_token;\n const [sessionError, session] = await getSession({ token: sessionToken });\n if(sessionError || !session || !session.user){\n return response.status(401).json({ error: 'Unauthorized' });\n }\n \n /*\n Whos permission are they checking?\n */\n const { userid } = request.params;\n const targetUserId = userid === 'current' ? session.user.id : userid;\n \n /*\n If they are checking another users permissions, do they have permission to do so?\n */\n if(userid !== 'current'){\n const [cPermError, cHasPerm] = await userHasPermission(session.user.id, 'system:permissions:read');\n if(cPermError || !cHasPerm){\n return response.status(403).json({ error: 'Forbidden' });\n }\n }\n \n /*\n Are they checking a specific permission or getting all?\n */\n const permissionName = request.query.permission;\n \n if(permissionName){\n /*\n Check a single permission\n */\n const [permError, hasPermission] = await getUserPermission(targetUserId, permissionName);\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n return response.json({ hasPermission });\n }\n \n /*\n Get all of the users permissions\n */\n const [permsError, userPermissions] = await getUserPermissions(targetUserId);\n if(permsError){\n return response.status(permsError.code).json({ error: permsError.msg });\n }\n \n response.json({ permissions: userPermissions });\n } catch(error){\n console.error('Get user permission error:', error);\n response.status(500).json({ error: error.message });\n }\n};\n"],"mappings":"OAAOA,eAAgB,2DAChBC,sBAAuB,yEACvBC,uBAAwB,0EACxBC,sBAAuB,iFAEfC,MAAOC,EAASC,KAC7B,IAIE,MAAMC,EAAeF,EAAQG,QAAQC,eAC9BC,EAAcC,SAAiBX,WAAW,CAAEY,MAAOL,IAC1D,GAAGG,IAAiBC,IAAYA,EAAQE,KACtC,OAAOP,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,iBAM5C,MAAMC,OAAEA,GAAWZ,EAAQa,OACrBC,EAA0B,YAAXF,EAAuBN,EAAQE,KAAKO,GAAKH,EAK9D,GAAc,YAAXA,EAAqB,CACtB,MAAOI,EAAYC,SAAkBnB,kBAAkBQ,EAAQE,KAAKO,GAAI,2BACxE,GAAGC,IAAeC,EAChB,OAAOhB,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,aAE9C,CAKA,MAAMO,EAAiBlB,EAAQmB,MAAMC,WAErC,GAAGF,EAAe,CAIhB,MAAOG,EAAWC,SAAuB1B,kBAAkBkB,EAAcI,GACzE,OAAGG,EACMpB,EAASQ,OAAOY,EAAUE,MAAMb,KAAK,CAAEC,MAAOU,EAAUG,MAE1DvB,EAASS,KAAK,CAAEY,iBACzB,CAKA,MAAOG,EAAYC,SAAyB7B,mBAAmBiB,GAC/D,GAAGW,EACD,OAAOxB,EAASQ,OAAOgB,EAAWF,MAAMb,KAAK,CAAEC,MAAOc,EAAWD,MAGnEvB,EAASS,KAAK,CAAEiB,YAAaD,GAC/B,CAAE,MAAMf,GACNiB,QAAQjB,MAAM,6BAA8BA,GAC5CV,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAOA,EAAMkB,SAC3C","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import getSession from"../../../../../../../server/utils/auth/getSession.js";import getUserPermissions from"../../../../../../../server/utils/permissions/getUserPermissions.js";import userHasPermission from"../../../../../../../server/utils/permissions/userHasPermission.js";export default async(s,r)=>{try{const e=s.query.permissions;if(!e)return r.status(400).json({error:"permissions parameter required"});const i=s.cookies.session_token,[o,t]=await getSession({token:i});if(o||!t||!t.user)return r.status(401).json({error:"Unauthorized"});const{userid:n}=s.params,a="current"===n?t.user.id:n;if("current"!==n){const[s,e]=await userHasPermission(t.user.id,"system:permissions:read");if(s||!e)return r.status(403).json({error:"Forbidden"})}const m=e.split(",").map(s=>s.trim()),[u,c]=await getUserPermissions(a);if(u)return r.status(u.code).json({error:u.msg});const p=new Set(c.map(s=>s.name)),d=m.every(s=>p.has(s));r.json({hasPermission:d})}catch(s){console.error("Check all permissions error:",s),r.status(500).json({error:s.message})}};
2
+ //# sourceMappingURL=GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/[userid]/permissions/all/GET.js","names":["getSession","getUserPermissions","userHasPermission","async","request","response","permissionsParam","query","permissions","status","json","error","sessionToken","cookies","session_token","sessionError","session","token","user","userid","params","targetUserId","id","cPermError","cHasPerm","permissionsToCheck","split","map","p","trim","permsError","userPermissions","code","msg","permissionNames","Set","name","hasAll","every","has","hasPermission","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../../server/utils/auth/getSession.js';\nimport getUserPermissions from '../../../../../../../server/utils/permissions/getUserPermissions.js';\nimport userHasPermission from '../../../../../../../server/utils/permissions/userHasPermission.js';\n\nexport default async (request, response) => {\n try {\n /*\n Which permissions are they checking?\n */\n const permissionsParam = request.query.permissions;\n if(!permissionsParam){\n return response.status(400).json({ error: 'permissions parameter required' });\n }\n \n /*\n Are they logged in?\n */\n const sessionToken = request.cookies.session_token;\n const [sessionError, session] = await getSession({ token: sessionToken });\n \n if(sessionError || !session || !session.user){\n return response.status(401).json({ error: 'Unauthorized' });\n }\n \n /*\n Whos permission are they checking?\n */\n const { userid } = request.params;\n const targetUserId = userid === 'current' ? session.user.id : userid;\n \n /*\n If they are checking another users permissions, do they have permission to do so?\n */\n if(userid !== 'current'){\n const [cPermError, cHasPerm] = await userHasPermission(session.user.id, 'system:permissions:read');\n if(cPermError || !cHasPerm){\n return response.status(403).json({ error: 'Forbidden' });\n }\n }\n\n /*\n They are either checking their own permissions, or have permission to check someone elses\n */\n const permissionsToCheck = permissionsParam.split(',').map(p => p.trim());\n\n const [permsError, userPermissions] = await getUserPermissions(targetUserId);\n \n if(permsError){\n return response.status(permsError.code).json({ error: permsError.msg });\n }\n \n const permissionNames = new Set(userPermissions.map(p => p.name));\n\n const hasAll = permissionsToCheck.every(p => permissionNames.has(p));\n\n response.json({ hasPermission: hasAll });\n } catch(error){\n console.error('Check all permissions error:', error);\n response.status(500).json({ error: error.message });\n }\n};\n"],"mappings":"OAAOA,eAAgB,8DAChBC,uBAAwB,6EACxBC,sBAAuB,oFAEfC,MAAOC,EAASC,KAC7B,IAIE,MAAMC,EAAmBF,EAAQG,MAAMC,YACvC,IAAIF,EACF,OAAOD,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,mCAM5C,MAAMC,EAAeR,EAAQS,QAAQC,eAC9BC,EAAcC,SAAiBhB,WAAW,CAAEiB,MAAOL,IAE1D,GAAGG,IAAiBC,IAAYA,EAAQE,KACtC,OAAOb,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,iBAM5C,MAAMQ,OAAEA,GAAWf,EAAQgB,OACrBC,EAA0B,YAAXF,EAAuBH,EAAQE,KAAKI,GAAKH,EAK9D,GAAc,YAAXA,EAAqB,CACtB,MAAOI,EAAYC,SAAkBtB,kBAAkBc,EAAQE,KAAKI,GAAI,2BACxE,GAAGC,IAAeC,EAChB,OAAOnB,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,aAE9C,CAKA,MAAMc,EAAqBnB,EAAiBoB,MAAM,KAAKC,IAAIC,GAAKA,EAAEC,SAE3DC,EAAYC,SAAyB9B,mBAAmBoB,GAE/D,GAAGS,EACD,OAAOzB,EAASI,OAAOqB,EAAWE,MAAMtB,KAAK,CAAEC,MAAOmB,EAAWG,MAGnE,MAAMC,EAAkB,IAAIC,IAAIJ,EAAgBJ,IAAIC,GAAKA,EAAEQ,OAErDC,EAASZ,EAAmBa,MAAMV,GAAKM,EAAgBK,IAAIX,IAEjEvB,EAASK,KAAK,CAAE8B,cAAeH,GACjC,CAAE,MAAM1B,GACN8B,QAAQ9B,MAAM,+BAAgCA,GAC9CN,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAOA,EAAM+B,SAC3C","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import getSession from"../../../../../../../server/utils/auth/getSession.js";import getAllPermissions from"../../../../../../../server/utils/permissions/getAllPermissions.js";import getUserPermissions from"../../../../../../../server/utils/permissions/getUserPermissions.js";import getUserGroups from"../../../../../../../server/utils/permissions/getUserGroups.js";export default async(s,r)=>{try{const e=s.cookies.session_token,[o,t]=await getSession({token:e});if(o||!t||!t.user)return r.status(401).json({error:"Unauthorized"});const i="current"===s.params.userid?t.user.id:parseInt(s.params.userid);if(!i)return r.status(400).json({error:"Invalid user ID"});const[n,m]=await getUserGroups(i);if(n)return r.status(n.code).json({error:n.msg});if(m.some(s=>"system:Administrators"===s.name)){const[s,e]=await getAllPermissions({limit:1e4,offset:0});return s?r.status(s.code).json({error:s.msg}):r.json({permissions:e.permissions.map(s=>s.name)})}const[a,u]=await getUserPermissions(i);if(a)return r.status(a.code).json({error:a.msg});r.json({permissions:u})}catch(s){console.error("List user permissions error:",s),r.status(500).json({error:s.message})}};
2
+ //# sourceMappingURL=GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/[userid]/permissions/list/GET.js","names":["getSession","getAllPermissions","getUserPermissions","getUserGroups","async","request","response","sessionToken","cookies","session_token","sessionError","session","token","user","status","json","error","userId","params","userid","id","parseInt","groupsError","userGroups","code","msg","some","group","name","permsError","allPermissions","limit","offset","permissions","map","p","userPermissions","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../../server/utils/auth/getSession.js';\nimport getAllPermissions from '../../../../../../../server/utils/permissions/getAllPermissions.js';\nimport getUserPermissions from '../../../../../../../server/utils/permissions/getUserPermissions.js';\nimport getUserGroups from '../../../../../../../server/utils/permissions/getUserGroups.js';\n\nexport default async (request, response) => {\n try {\n /*\n Are they logged in?\n */\n const sessionToken = request.cookies.session_token;\n const [sessionError, session] = await getSession({ token: sessionToken });\n \n if(sessionError || !session || !session.user){\n return response.status(401).json({ error: 'Unauthorized' });\n }\n \n const userId = request.params.userid === 'current' ? session.user.id : parseInt(request.params.userid);\n \n if(!userId){\n return response.status(400).json({ error: 'Invalid user ID' });\n }\n \n /*\n Get user's groups to check for admin\n */\n const [groupsError, userGroups] = await getUserGroups(userId);\n \n if(groupsError){\n return response.status(groupsError.code).json({ error: groupsError.msg });\n }\n\n const isAdmin = userGroups.some(group => group.name === 'system:Administrators');\n\n /*\n If admin, return all permissions\n */\n if(isAdmin){\n const [permsError, allPermissions] = await getAllPermissions({ limit: 10000, offset: 0 });\n \n if(permsError){\n return response.status(permsError.code).json({ error: permsError.msg });\n }\n\n return response.json({ permissions: allPermissions.permissions.map(p => p.name) });\n }\n\n /*\n Otherwise, get user's actual permissions\n */\n const [permsError, userPermissions] = await getUserPermissions(userId);\n \n if(permsError){\n return response.status(permsError.code).json({ error: permsError.msg });\n }\n\n response.json({ permissions: userPermissions });\n } catch(error){\n console.error('List user permissions error:', error);\n response.status(500).json({ error: error.message });\n }\n};\n"],"mappings":"OAAOA,eAAgB,8DAChBC,sBAAuB,4EACvBC,uBAAwB,6EACxBC,kBAAmB,gFAEXC,MAAOC,EAASC,KAC7B,IAIE,MAAMC,EAAeF,EAAQG,QAAQC,eAC9BC,EAAcC,SAAiBX,WAAW,CAAEY,MAAOL,IAE1D,GAAGG,IAAiBC,IAAYA,EAAQE,KACtC,OAAOP,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,iBAG5C,MAAMC,EAAmC,YAA1BZ,EAAQa,OAAOC,OAAuBR,EAAQE,KAAKO,GAAKC,SAAShB,EAAQa,OAAOC,QAE/F,IAAIF,EACF,OAAOX,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAO,oBAM5C,MAAOM,EAAaC,SAAoBpB,cAAcc,GAEtD,GAAGK,EACD,OAAOhB,EAASQ,OAAOQ,EAAYE,MAAMT,KAAK,CAAEC,MAAOM,EAAYG,MAQrE,GALgBF,EAAWG,KAAKC,GAAwB,0BAAfA,EAAMC,MAKpC,CACT,MAAOC,EAAYC,SAAwB7B,kBAAkB,CAAE8B,MAAO,IAAOC,OAAQ,IAErF,OAAGH,EACMvB,EAASQ,OAAOe,EAAWL,MAAMT,KAAK,CAAEC,MAAOa,EAAWJ,MAG5DnB,EAASS,KAAK,CAAEkB,YAAaH,EAAeG,YAAYC,IAAIC,GAAKA,EAAEP,OAC5E,CAKA,MAAOC,EAAYO,SAAyBlC,mBAAmBe,GAE/D,GAAGY,EACD,OAAOvB,EAASQ,OAAOe,EAAWL,MAAMT,KAAK,CAAEC,MAAOa,EAAWJ,MAGnEnB,EAASS,KAAK,CAAEkB,YAAaG,GAC/B,CAAE,MAAMpB,GACNqB,QAAQrB,MAAM,+BAAgCA,GAC9CV,EAASQ,OAAO,KAAKC,KAAK,CAAEC,MAAOA,EAAMsB,SAC3C","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import getSession from"../../../../../../../server/utils/auth/getSession.js";import getUserPermissions from"../../../../../../../server/utils/permissions/getUserPermissions.js";import userHasPermission from"../../../../../../../server/utils/permissions/userHasPermission.js";export default async(s,r)=>{try{const e=s.query.permissions;if(!e)return r.status(400).json({error:"permissions parameter required"});const o=s.cookies.session_token,[i,t]=await getSession({token:o});if(i||!t||!t.user)return r.status(401).json({error:"Unauthorized"});const{userid:n}=s.params,a="current"===n?t.user.id:n;if("current"!==n){const[s,e]=await userHasPermission(t.user.id,"system:permissions:read");if(s||!e)return r.status(403).json({error:"Forbidden"})}const m=e.split(",").map(s=>s.trim()),[u,c]=await getUserPermissions(a);if(u)return r.status(u.code).json({error:u.msg});const p=new Set(c.map(s=>s.name)),d=m.some(s=>p.has(s));r.json({hasPermission:d})}catch(s){console.error("Check some permissions error:",s),r.status(500).json({error:s.message})}};
2
+ //# sourceMappingURL=GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/[userid]/permissions/some/GET.js","names":["getSession","getUserPermissions","userHasPermission","async","request","response","permissionsParam","query","permissions","status","json","error","sessionToken","cookies","session_token","sessionError","session","token","user","userid","params","targetUserId","id","cPermError","cHasPerm","permissionsToCheck","split","map","p","trim","permsError","userPermissions","code","msg","permissionNames","Set","name","hasSome","some","has","hasPermission","console","message"],"sources":["0"],"sourcesContent":["import getSession from '../../../../../../../server/utils/auth/getSession.js';\nimport getUserPermissions from '../../../../../../../server/utils/permissions/getUserPermissions.js';\nimport userHasPermission from '../../../../../../../server/utils/permissions/userHasPermission.js';\n\nexport default async (request, response) => {\n try {\n /*\n Which permissions are they checking?\n */\n const permissionsParam = request.query.permissions;\n if(!permissionsParam){\n return response.status(400).json({ error: 'permissions parameter required' });\n }\n \n /*\n Are they logged in?\n */\n const sessionToken = request.cookies.session_token;\n const [sessionError, session] = await getSession({ token: sessionToken });\n \n if(sessionError || !session || !session.user){\n return response.status(401).json({ error: 'Unauthorized' });\n }\n \n /*\n Whos permission are they checking?\n */\n const { userid } = request.params;\n const targetUserId = userid === 'current' ? session.user.id : userid;\n \n /*\n If they are checking another users permissions, do they have permission to do so?\n */\n if(userid !== 'current'){\n const [cPermError, cHasPerm] = await userHasPermission(session.user.id, 'system:permissions:read');\n if(cPermError || !cHasPerm){\n return response.status(403).json({ error: 'Forbidden' });\n }\n }\n\n /*\n They are either checking their own permissions, or have permission to check someone elses\n */\n const permissionsToCheck = permissionsParam.split(',').map(p => p.trim());\n\n const [permsError, userPermissions] = await getUserPermissions(targetUserId);\n \n if(permsError){\n return response.status(permsError.code).json({ error: permsError.msg });\n }\n \n const permissionNames = new Set(userPermissions.map(p => p.name));\n\n const hasSome = permissionsToCheck.some(p => permissionNames.has(p));\n\n response.json({ hasPermission: hasSome });\n } catch(error){\n console.error('Check some permissions error:', error);\n response.status(500).json({ error: error.message });\n }\n};\n"],"mappings":"OAAOA,eAAgB,8DAChBC,uBAAwB,6EACxBC,sBAAuB,oFAEfC,MAAOC,EAASC,KAC7B,IAIE,MAAMC,EAAmBF,EAAQG,MAAMC,YACvC,IAAIF,EACF,OAAOD,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,mCAM5C,MAAMC,EAAeR,EAAQS,QAAQC,eAC9BC,EAAcC,SAAiBhB,WAAW,CAAEiB,MAAOL,IAE1D,GAAGG,IAAiBC,IAAYA,EAAQE,KACtC,OAAOb,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,iBAM5C,MAAMQ,OAAEA,GAAWf,EAAQgB,OACrBC,EAA0B,YAAXF,EAAuBH,EAAQE,KAAKI,GAAKH,EAK9D,GAAc,YAAXA,EAAqB,CACtB,MAAOI,EAAYC,SAAkBtB,kBAAkBc,EAAQE,KAAKI,GAAI,2BACxE,GAAGC,IAAeC,EAChB,OAAOnB,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAO,aAE9C,CAKA,MAAMc,EAAqBnB,EAAiBoB,MAAM,KAAKC,IAAIC,GAAKA,EAAEC,SAE3DC,EAAYC,SAAyB9B,mBAAmBoB,GAE/D,GAAGS,EACD,OAAOzB,EAASI,OAAOqB,EAAWE,MAAMtB,KAAK,CAAEC,MAAOmB,EAAWG,MAGnE,MAAMC,EAAkB,IAAIC,IAAIJ,EAAgBJ,IAAIC,GAAKA,EAAEQ,OAErDC,EAAUZ,EAAmBa,KAAKV,GAAKM,EAAgBK,IAAIX,IAEjEvB,EAASK,KAAK,CAAE8B,cAAeH,GACjC,CAAE,MAAM1B,GACN8B,QAAQ9B,MAAM,gCAAiCA,GAC/CN,EAASI,OAAO,KAAKC,KAAK,CAAEC,MAAOA,EAAM+B,SAC3C","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import currentUserHasPermission from"../../../../../../server/utils/permissions/currentUserHasPermission.js";import deleteSession from"../../../../../../server/utils/sessions/deleteSession.js";export default async(s,e)=>{const r=s.cookies.session_token,[o,t]=await currentUserHasPermission(r,"system:user:update");if(o)return e.status(o.code).json({error:o.msg});if(!t)return e.status(403).json({error:"Insufficient permissions"});const{sessionToken:n}=s.body;if(!n)return e.status(400).json({error:"Session token is required"});const[i,u]=await deleteSession(n);if(i)return e.status(i.code).json({error:i.msg});e.json(u)};
2
+ //# sourceMappingURL=DELETE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/[userid]/sessions/DELETE.js","names":["currentUserHasPermission","deleteSession","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","sessionToken","body","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport deleteSession from '../../../../../../server/utils/sessions/deleteSession.js';\n\nexport default async (request, response) => {\n const token = request.cookies.session_token;\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:update');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'Insufficient permissions' });\n }\n\n const { sessionToken } = request.body;\n\n if(!sessionToken){\n return response.status(400).json({ error: 'Session token is required' });\n }\n\n const [error, result] = await deleteSession(sessionToken);\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n response.json(result);\n};\n"],"mappings":"OAAOA,6BAA8B,gFAC9BC,kBAAmB,0EAEXC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,sBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,aAAEA,GAAiBZ,EAAQa,KAEjC,IAAID,EACF,OAAOX,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,8BAG5C,MAAOA,EAAOI,SAAgBhB,cAAcc,GAE5C,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 getUserSessions from"../../../../../../server/utils/sessions/getUserSessions.js";export default async(s,e)=>{const r=s.cookies.session_token,[t,i]=await currentUserHasPermission(r,"system:user:read");if(t)return e.status(t.code).json({error:t.msg});if(!i)return e.status(403).json({error:"Insufficient permissions"});const{userid:o}=s.params,n=parseInt(s.query.limit)||50,a=parseInt(s.query.offset)||0,[u,m]=await getUserSessions(o,{limit:n,offset:a});if(u)return e.status(u.code).json({error:u.msg});e.json(m)};
2
+ //# sourceMappingURL=GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/[userid]/sessions/GET.js","names":["currentUserHasPermission","getUserSessions","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","limit","parseInt","query","offset","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport getUserSessions from '../../../../../../server/utils/sessions/getUserSessions.js';\n\nexport default async (request, response) => {\n const token = request.cookies.session_token;\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:read');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'Insufficient permissions' });\n }\n\n const { userid } = request.params;\n const limit = parseInt(request.query.limit) || 50;\n const offset = parseInt(request.query.offset) || 0;\n const [error, data] = await getUserSessions(userid, { limit, offset });\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n response.json(data);\n};\n"],"mappings":"OAAOA,6BAA8B,gFAC9BC,oBAAqB,4EAEbC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,oBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,OAAEA,GAAWZ,EAAQa,OACrBC,EAAQC,SAASf,EAAQgB,MAAMF,QAAU,GACzCG,EAASF,SAASf,EAAQgB,MAAMC,SAAW,GAC1CP,EAAOQ,SAAcpB,gBAAgBc,EAAQ,CAAEE,QAAOG,WAE7D,GAAGP,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKS","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import currentUserHasPermission from"../../../../../../../server/utils/permissions/currentUserHasPermission.js";import deleteExpiredUserSessions from"../../../../../../../server/utils/sessions/deleteExpiredUserSessions.js";export default async(s,e)=>{const r=s.cookies.session_token,[i,o]=await currentUserHasPermission(r,"system:user:update");if(i)return e.status(i.code).json({error:i.msg});if(!o)return e.status(403).json({error:"Insufficient permissions"});const{userid:t}=s.params,[n,u]=await deleteExpiredUserSessions(t);if(n)return e.status(n.code).json({error:n.msg});e.json(u)};
2
+ //# sourceMappingURL=DELETE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/[userid]/sessions/expired/DELETE.js","names":["currentUserHasPermission","deleteExpiredUserSessions","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","userid","params","result"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport deleteExpiredUserSessions from '../../../../../../../server/utils/sessions/deleteExpiredUserSessions.js';\n\nexport default async (request, response) => {\n const token = request.cookies.session_token;\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:update');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'Insufficient permissions' });\n }\n\n const { userid } = request.params;\n const [error, result] = await deleteExpiredUserSessions(userid);\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n response.json(result);\n};\n"],"mappings":"OAAOA,6BAA8B,mFAC9BC,8BAA+B,yFAEvBC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,sBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG5C,MAAME,OAAEA,GAAWZ,EAAQa,QACpBH,EAAOI,SAAgBhB,0BAA0Bc,GAExD,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 createUser from"../../../../../server/utils/users/createUser.js";export default async(s,e)=>{try{const r=s.cookies.session_token,{name:t,email:i,password:o,emailVerified:a}=s.body,[n,m]=await currentUserHasPermission(r,"system:user:create");if(n)return e.status(n.code).json({error:n.msg});if(!m)return e.status(403).json({error:"Insufficient permissions"});const[c,u]=await createUser({name:t,email:i,password:o,emailVerified:a});if(c)return e.status(c.code).json({error:c.msg});e.json(u)}catch(s){e.status(500).json({error:s.message})}};
2
+ //# sourceMappingURL=POST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/create/POST.js","names":["currentUserHasPermission","createUser","async","request","response","token","cookies","session_token","name","email","password","emailVerified","body","permError","hasPermission","status","code","json","error","msg","result","message"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport createUser from '../../../../../server/utils/users/createUser.js';\n\nexport default async (request, response) => {\n\ttry {\n\t\tconst token = request.cookies.session_token;\n\t\tconst { name, email, password, emailVerified } = request.body;\n\n\t\tconst [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:create');\n\n\t\tif(permError){\n\t\t\treturn response.status(permError.code).json({ error: permError.msg });\n\t\t}\n\n\t\tif(!hasPermission){\n\t\t\treturn response.status(403).json({ error: 'Insufficient permissions' });\n\t\t}\n\n\t\tconst [error, result] = await createUser({ name, email, password, emailVerified });\n\n\t\tif(error){\n\t\t\treturn response.status(error.code).json({ error: error.msg });\n\t\t}\n\n\t\tresponse.json(result);\n\t} catch(error) {\n\t\tresponse.status(500).json({ error: error.message });\n\t}\n};\n"],"mappings":"OAAOA,6BAA8B,6EAC9BC,eAAgB,iEAERC,MAAOC,EAASC,KAC9B,IACC,MAAMC,EAAQF,EAAQG,QAAQC,eACxBC,KAAEA,EAAIC,MAAEA,EAAKC,SAAEA,EAAQC,cAAEA,GAAkBR,EAAQS,MAElDC,EAAWC,SAAuBd,yBAAyBK,EAAO,sBAEzE,GAAGQ,EACF,OAAOT,EAASW,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGhE,IAAIL,EACH,OAAOV,EAASW,OAAO,KAAKE,KAAK,CAAEC,MAAO,6BAG3C,MAAOA,EAAOE,SAAgBnB,WAAW,CAAEO,OAAMC,QAAOC,WAAUC,kBAElE,GAAGO,EACF,OAAOd,EAASW,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGxDf,EAASa,KAAKG,EACf,CAAE,MAAMF,GACPd,EAASW,OAAO,KAAKE,KAAK,CAAEC,MAAOA,EAAMG,SAC1C","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import currentUserHasPermission from"../../../../../server/utils/permissions/currentUserHasPermission.js";import searchUsers from"../../../../../server/utils/users/searchUsers.js";export default async(s,r)=>{const e=s.cookies.session_token,[o,t]=await currentUserHasPermission(e,"system:user:read");if(o)return r.status(o.code).json({error:o.msg});if(!t)return r.status(403).json({error:"You do not have permission to view users"});const i=s.query.q||"",n=Math.min(parseInt(s.query.limit)||20,100),u=parseInt(s.query.offset)||0,a=s.query.inGroup||void 0,m=s.query.notInGroup||void 0,[c,p]=await searchUsers({q:i,limit:n,offset:u,inGroup:a,notInGroup:m});if(c)return r.status(c.code).json({error:c.msg});r.json(p)};
2
+ //# sourceMappingURL=GET.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/api/user/search/GET.js","names":["currentUserHasPermission","searchUsers","async","request","response","token","cookies","session_token","permError","hasPermission","status","code","json","error","msg","q","query","limit","Math","min","parseInt","offset","inGroup","undefined","notInGroup","data"],"sources":["0"],"sourcesContent":["import currentUserHasPermission from '../../../../../server/utils/permissions/currentUserHasPermission.js';\nimport searchUsers from '../../../../../server/utils/users/searchUsers.js';\n\nexport default async (request, response) => {\n const token = request.cookies.session_token;\n const [permError, hasPermission] = await currentUserHasPermission(token, 'system:user:read');\n\n if(permError){\n return response.status(permError.code).json({ error: permError.msg });\n }\n\n if(!hasPermission){\n return response.status(403).json({ error: 'You do not have permission to view users' });\n }\n\n const q = request.query.q || '';\n const limit = Math.min(parseInt(request.query.limit) || 20, 100);\n const offset = parseInt(request.query.offset) || 0;\n const inGroup = request.query.inGroup || undefined;\n const notInGroup = request.query.notInGroup || undefined;\n\n const [error, data] = await searchUsers({ q, limit, offset, inGroup, notInGroup });\n\n if(error){\n return response.status(error.code).json({ error: error.msg });\n }\n\n response.json(data);\n};\n"],"mappings":"OAAOA,6BAA8B,6EAC9BC,gBAAiB,kEAETC,MAAOC,EAASC,KAC7B,MAAMC,EAAQF,EAAQG,QAAQC,eACvBC,EAAWC,SAAuBT,yBAAyBK,EAAO,oBAEzE,GAAGG,EACD,OAAOJ,EAASM,OAAOF,EAAUG,MAAMC,KAAK,CAAEC,MAAOL,EAAUM,MAGjE,IAAIL,EACF,OAAOL,EAASM,OAAO,KAAKE,KAAK,CAAEC,MAAO,6CAG5C,MAAME,EAAIZ,EAAQa,MAAMD,GAAK,GACvBE,EAAQC,KAAKC,IAAIC,SAASjB,EAAQa,MAAMC,QAAU,GAAI,KACtDI,EAASD,SAASjB,EAAQa,MAAMK,SAAW,EAC3CC,EAAUnB,EAAQa,MAAMM,cAAWC,EACnCC,EAAarB,EAAQa,MAAMQ,iBAAcD,GAExCV,EAAOY,SAAcxB,YAAY,CAAEc,IAAGE,QAAOI,SAAQC,UAASE,eAErE,GAAGX,EACD,OAAOT,EAASM,OAAOG,EAAMF,MAAMC,KAAK,CAAEC,MAAOA,EAAMC,MAGzDV,EAASQ,KAAKa","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import LightComponent from"/kempo-ui/components/LightComponent.js";import{logout}from"../sdk.js";export default class LogoutBtn extends LightComponent{static get properties(){return{redirect:{type:String},buttonClass:{type:String,attribute:"button-class"}}}connectedCallback(){this.buttonText=this.textContent.trim()||"Logout",this.innerHTML="",super.connectedCallback()}updated(t){super.updated(t)}handleLogout=async()=>{const[t]=await logout();t?console.error("Logout failed:",t.msg):this.redirect&&(window.location.href=this.redirect)};renderLightDom(){const t=document.createElement("button");return t.type="button",t.className=this.buttonClass?`kempo-component-logout ${this.buttonClass}`:"kempo-component-logout",t.textContent=this.buttonText,t.addEventListener("click",this.handleLogout),t}}customElements.define("k-logout-btn",LogoutBtn);
2
+ //# sourceMappingURL=LogoutBtn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/components/LogoutBtn.js","names":["LightComponent","logout","LogoutBtn","properties","redirect","type","String","buttonClass","attribute","connectedCallback","this","buttonText","textContent","trim","innerHTML","super","updated","changedProperties","handleLogout","async","error","console","msg","window","location","href","renderLightDom","button","document","createElement","className","addEventListener","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\nimport { logout } from '../sdk.js';\n\nexport default class LogoutBtn extends LightComponent {\n static get properties() {\n return {\n redirect: { type: String },\n buttonClass: { type: String, attribute: 'button-class' }\n };\n }\n\n connectedCallback() {\n this.buttonText = this.textContent.trim() || 'Logout';\n this.innerHTML = '';\n super.connectedCallback();\n }\n\n updated(changedProperties) {\n super.updated(changedProperties);\n }\n\n handleLogout = async () => {\n const [error] = await logout();\n if(error){\n console.error('Logout failed:', error.msg);\n return;\n }\n if(this.redirect){\n window.location.href = this.redirect;\n }\n };\n\n renderLightDom() {\n const button = document.createElement('button');\n button.type = 'button';\n button.className = this.buttonClass ? `kempo-component-logout ${this.buttonClass}` : 'kempo-component-logout';\n button.textContent = this.buttonText;\n button.addEventListener('click', this.handleLogout);\n return button;\n }\n}\n\ncustomElements.define('k-logout-btn', LogoutBtn);\n"],"mappings":"OAAOA,mBAAoB,gDAClBC,WAAc,2BAER,MAAMC,kBAAkBF,eACrC,qBAAWG,GACT,MAAO,CACLC,SAAU,CAAEC,KAAMC,QAClBC,YAAa,CAAEF,KAAMC,OAAQE,UAAW,gBAE5C,CAEA,iBAAAC,GACEC,KAAKC,WAAaD,KAAKE,YAAYC,QAAU,SAC7CH,KAAKI,UAAY,GACjBC,MAAMN,mBACR,CAEA,OAAAO,CAAQC,GACNF,MAAMC,QAAQC,EAChB,CAEAC,aAAeC,UACb,MAAOC,SAAenB,SACnBmB,EACDC,QAAQD,MAAM,iBAAkBA,EAAME,KAGrCZ,KAAKN,WACNmB,OAAOC,SAASC,KAAOf,KAAKN,WAIhC,cAAAsB,GACE,MAAMC,EAASC,SAASC,cAAc,UAKtC,OAJAF,EAAOtB,KAAO,SACdsB,EAAOG,UAAYpB,KAAKH,YAAc,0BAA0BG,KAAKH,cAAgB,yBACrFoB,EAAOf,YAAcF,KAAKC,WAC1BgB,EAAOI,iBAAiB,QAASrB,KAAKQ,cAC/BS,CACT,EAGFK,eAAeC,OAAO,eAAgB/B","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ import LightComponent from"/kempo-ui/components/LightComponent.js";import{html}from"/kempo-ui/lit-all.min.js";import{getMenuBySlug}from"../sdk.js";export default class Menu extends LightComponent{static get properties(){return{slug:{type:String,reflect:!0},loaded:{type:Boolean,state:!0},menuData:{state:!0}}}constructor(){super(),this.loaded=!1,this.menuData=null}async connectedCallback(){super.connectedCallback(),await this.fetchMenu()}fetchMenu=async()=>{if(!this.slug)return void(this.loaded=!0);const[e,t]=await getMenuBySlug(this.slug);if(e)return console.error(`<k-menu slug="${this.slug}">:`,e.msg),void(this.loaded=!0);this.menuData=t,this.loaded=!0};updated(e){super.updated(e)}renderItem(e){const t=e.url||"#",n="#"!==t&&window.location.pathname===t,a="_blank"===e.target?"_blank":"_self";return html`
2
+ <li>
3
+ <a
4
+ href="${t}"
5
+ ?class="${n}"
6
+ target="${a}"
7
+ rel="${"_blank"===a?"noopener noreferrer":""}"
8
+ class="${n?"active":""}"
9
+ >${e.label}</a>
10
+ ${e.children?.length?html`<ul>${e.children.map(e=>this.renderItem(e))}</ul>`:""}
11
+ </li>
12
+ `}renderLightDom(){return this.loaded&&this.menuData?html`
13
+ <nav class="k-menu" data-slug="${this.slug}">
14
+ <ul>${this.menuData.items.map(e=>this.renderItem(e))}</ul>
15
+ </nav>
16
+ `:html``}}customElements.define("k-menu",Menu);
17
+ //# sourceMappingURL=Menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/components/Menu.js","names":["LightComponent","html","getMenuBySlug","Menu","properties","slug","type","String","reflect","loaded","Boolean","state","menuData","constructor","super","this","connectedCallback","fetchMenu","async","error","data","console","msg","updated","changedProperties","renderItem","item","href","url","isActive","window","location","pathname","target","label","children","length","map","child","renderLightDom","items","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\nimport { html } from '/kempo-ui/lit-all.min.js';\nimport { getMenuBySlug } from '../sdk.js';\n\nexport default class Menu extends LightComponent {\n /*\n Reactive Properties\n */\n static get properties() {\n return {\n slug: { type: String, reflect: true },\n loaded: { type: Boolean, state: true },\n menuData: { state: true }\n };\n }\n\n constructor() {\n super();\n this.loaded = false;\n this.menuData = null;\n }\n\n /*\n Lifecycle\n */\n async connectedCallback() {\n super.connectedCallback();\n await this.fetchMenu();\n }\n\n /*\n Data Fetching\n */\n fetchMenu = async () => {\n if(!this.slug){\n this.loaded = true;\n return;\n }\n\n const [error, data] = await getMenuBySlug(this.slug);\n\n if(error){\n console.error(`<k-menu slug=\"${this.slug}\">:`, error.msg);\n this.loaded = true;\n return;\n }\n\n this.menuData = data;\n this.loaded = true;\n };\n\n /*\n Render\n */\n updated(changedProperties) {\n super.updated(changedProperties);\n }\n\n renderItem(item) {\n const href = item.url || '#';\n const isActive = href !== '#' && window.location.pathname === href;\n const target = item.target === '_blank' ? '_blank' : '_self';\n\n return html`\n <li>\n <a\n href=\"${href}\"\n ?class=\"${isActive}\"\n target=\"${target}\"\n rel=\"${target === '_blank' ? 'noopener noreferrer' : ''}\"\n class=\"${isActive ? 'active' : ''}\"\n >${item.label}</a>\n ${item.children?.length ? html`<ul>${item.children.map(child => this.renderItem(child))}</ul>` : ''}\n </li>\n `;\n }\n\n renderLightDom() {\n if(!this.loaded || !this.menuData) return html``;\n\n return html`\n <nav class=\"k-menu\" data-slug=\"${this.slug}\">\n <ul>${this.menuData.items.map(item => this.renderItem(item))}</ul>\n </nav>\n `;\n }\n}\n\ncustomElements.define('k-menu', Menu);\n"],"mappings":"OAAOA,mBAAoB,gDAClBC,SAAY,kCACZC,kBAAqB,2BAEf,MAAMC,aAAaH,eAIhC,qBAAWI,GACT,MAAO,CACLC,KAAM,CAAEC,KAAMC,OAAQC,SAAS,GAC/BC,OAAQ,CAAEH,KAAMI,QAASC,OAAO,GAChCC,SAAU,CAAED,OAAO,GAEvB,CAEA,WAAAE,GACEC,QACAC,KAAKN,QAAS,EACdM,KAAKH,SAAW,IAClB,CAKA,uBAAMI,GACJF,MAAME,0BACAD,KAAKE,WACb,CAKAA,UAAYC,UACV,IAAIH,KAAKV,KAEP,YADAU,KAAKN,QAAS,GAIhB,MAAOU,EAAOC,SAAclB,cAAca,KAAKV,MAE/C,GAAGc,EAGD,OAFAE,QAAQF,MAAM,iBAAiBJ,KAAKV,UAAWc,EAAMG,UACrDP,KAAKN,QAAS,GAIhBM,KAAKH,SAAWQ,EAChBL,KAAKN,QAAS,GAMhB,OAAAc,CAAQC,GACNV,MAAMS,QAAQC,EAChB,CAEA,UAAAC,CAAWC,GACT,MAAMC,EAAOD,EAAKE,KAAO,IACnBC,EAAoB,MAATF,GAAgBG,OAAOC,SAASC,WAAaL,EACxDM,EAAyB,WAAhBP,EAAKO,OAAsB,SAAW,QAErD,OAAOhC,IAAI;;;kBAGG0B;oBACEE;oBACAI;iBACQ,WAAXA,EAAsB,sBAAwB;mBAC5CJ,EAAW,SAAW;WAC9BH,EAAKQ;UACNR,EAAKS,UAAUC,OAASnC,IAAI,OAAOyB,EAAKS,SAASE,IAAIC,GAASvB,KAAKU,WAAWa,WAAiB;;KAGvG,CAEA,cAAAC,GACE,OAAIxB,KAAKN,QAAWM,KAAKH,SAElBX,IAAI;uCACwBc,KAAKV;cAC9BU,KAAKH,SAAS4B,MAAMH,IAAIX,GAAQX,KAAKU,WAAWC;;MAJhBzB,IAAI,EAOhD,EAGFwC,eAAeC,OAAO,SAAUvC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import LightComponent from"/kempo-ui/components/LightComponent.js";import{html}from"/kempo-ui/lit-all.min.js";import{currentUserHasPermission,currentUserHasAllPermissions,currentUserHasSomePermissions}from"../sdk.js";export default class Permission extends LightComponent{static properties={has:{type:String},all:{type:String},some:{type:String},loading:{type:Boolean,state:!0},hasPermission:{type:Boolean,state:!0}};constructor(){super(),this.has="",this.all="",this.some="",this.loading=!0,this.hasPermission=!1}async connectedCallback(){super.connectedCallback(),await this.checkPermissions()}async checkPermissions(){const s=[this.has,this.all,this.some].filter(Boolean).length;if(s>1)return this.hasPermission=!1,void(this.loading=!1);if(0===s)return this.hasPermission=!0,void(this.loading=!1);try{if(this.has){const[s,i]=await currentUserHasPermission({permission:this.has});this.hasPermission=!s&&i.hasPermission}else if(this.all){const s=this.all.split(",").map(s=>s.trim()),[i,t]=await currentUserHasAllPermissions({permissions:s});this.hasPermission=!i&&t.hasPermission}else{const s=this.some.split(",").map(s=>s.trim()),[i,t]=await currentUserHasSomePermissions({permissions:s});this.hasPermission=!i&&t.hasPermission}}catch(s){this.hasPermission=!1}finally{this.loading=!1}}renderLightDom(){return this.loading?(this.style.display="none",html``):this.hasPermission?(this.style.display="",html`<slot></slot>`):(this.style.display="none",html``)}}window.customElements.define("k-permission",Permission);
2
+ //# sourceMappingURL=Permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/components/Permission.js","names":["LightComponent","html","currentUserHasPermission","currentUserHasAllPermissions","currentUserHasSomePermissions","Permission","static","has","type","String","all","some","loading","Boolean","state","hasPermission","constructor","super","this","connectedCallback","checkPermissions","attributeCount","filter","length","error","data","permission","permissions","split","map","p","trim","renderLightDom","style","display","window","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\nimport { html } from '/kempo-ui/lit-all.min.js';\nimport { currentUserHasPermission, currentUserHasAllPermissions, currentUserHasSomePermissions } from '../sdk.js';\n\nexport default class Permission extends LightComponent {\n\tstatic properties = {\n\t\thas: { type: String },\n\t\tall: { type: String },\n\t\tsome: { type: String },\n\t\tloading: { type: Boolean, state: true },\n\t\thasPermission: { type: Boolean, state: true }\n\t};\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.has = '';\n\t\tthis.all = '';\n\t\tthis.some = '';\n\t\tthis.loading = true;\n\t\tthis.hasPermission = false;\n\t}\n\n\tasync connectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tawait this.checkPermissions();\n\t}\n\n\tasync checkPermissions() {\n\t\tconst attributeCount = [this.has, this.all, this.some].filter(Boolean).length;\n\t\t\n\t\tif(attributeCount > 1) {\n\t\t\tthis.hasPermission = false;\n\t\t\tthis.loading = false;\n\t\t\treturn;\n\t\t}\n\n\t\tif(attributeCount === 0) {\n\t\t\tthis.hasPermission = true;\n\t\t\tthis.loading = false;\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tif(this.has) {\n\t\t\t\tconst [error, data] = await currentUserHasPermission({ permission: this.has });\n\t\t\t\tthis.hasPermission = error ? false : data.hasPermission;\n\t\t\t} else if(this.all) {\n\t\t\t\tconst permissions = this.all.split(',').map(p => p.trim());\n\t\t\t\tconst [error, data] = await currentUserHasAllPermissions({ permissions });\n\t\t\t\tthis.hasPermission = error ? false : data.hasPermission;\n\t\t\t} else {\n\t\t\t\tconst permissions = this.some.split(',').map(p => p.trim());\n\t\t\t\tconst [error, data] = await currentUserHasSomePermissions({ permissions });\n\t\t\t\tthis.hasPermission = error ? false : data.hasPermission;\n\t\t\t}\n\t\t} catch(error) {\n\t\t\tthis.hasPermission = false;\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t}\n\n\trenderLightDom() {\n\t\tif(this.loading) {\n\t\t\tthis.style.display = 'none';\n\t\t\treturn html``;\n\t\t}\n\n\t\tif(!this.hasPermission) {\n\t\t\tthis.style.display = 'none';\n\t\t\treturn html``;\n\t\t}\n\n\t\tthis.style.display = '';\n\t\treturn html`<slot></slot>`;\n\t}\n}\n\nwindow.customElements.define('k-permission', Permission);\n"],"mappings":"OAAOA,mBAAoB,gDAClBC,SAAY,kCACZC,yBAA0BC,6BAA8BC,kCAAqC,2BAEvF,MAAMC,mBAAmBL,eACvCM,kBAAoB,CACnBC,IAAK,CAAEC,KAAMC,QACbC,IAAK,CAAEF,KAAMC,QACbE,KAAM,CAAEH,KAAMC,QACdG,QAAS,CAAEJ,KAAMK,QAASC,OAAO,GACjCC,cAAe,CAAEP,KAAMK,QAASC,OAAO,IAGxC,WAAAE,GACCC,QACAC,KAAKX,IAAM,GACXW,KAAKR,IAAM,GACXQ,KAAKP,KAAO,GACZO,KAAKN,SAAU,EACfM,KAAKH,eAAgB,CACtB,CAEA,uBAAMI,GACLF,MAAME,0BACAD,KAAKE,kBACZ,CAEA,sBAAMA,GACL,MAAMC,EAAiB,CAACH,KAAKX,IAAKW,KAAKR,IAAKQ,KAAKP,MAAMW,OAAOT,SAASU,OAEvE,GAAGF,EAAiB,EAGnB,OAFAH,KAAKH,eAAgB,OACrBG,KAAKN,SAAU,GAIhB,GAAsB,IAAnBS,EAGF,OAFAH,KAAKH,eAAgB,OACrBG,KAAKN,SAAU,GAIhB,IACC,GAAGM,KAAKX,IAAK,CACZ,MAAOiB,EAAOC,SAAcvB,yBAAyB,CAAEwB,WAAYR,KAAKX,MACxEW,KAAKH,eAAgBS,GAAgBC,EAAKV,aAC3C,MAAO,GAAGG,KAAKR,IAAK,CACnB,MAAMiB,EAAcT,KAAKR,IAAIkB,MAAM,KAAKC,IAAIC,GAAKA,EAAEC,SAC5CP,EAAOC,SAActB,6BAA6B,CAAEwB,gBAC3DT,KAAKH,eAAgBS,GAAgBC,EAAKV,aAC3C,KAAO,CACN,MAAMY,EAAcT,KAAKP,KAAKiB,MAAM,KAAKC,IAAIC,GAAKA,EAAEC,SAC7CP,EAAOC,SAAcrB,8BAA8B,CAAEuB,gBAC5DT,KAAKH,eAAgBS,GAAgBC,EAAKV,aAC3C,CACD,CAAE,MAAMS,GACPN,KAAKH,eAAgB,CACtB,CAAE,QACDG,KAAKN,SAAU,CAChB,CACD,CAEA,cAAAoB,GACC,OAAGd,KAAKN,SACPM,KAAKe,MAAMC,QAAU,OACdjC,IAAI,IAGRiB,KAAKH,eAKTG,KAAKe,MAAMC,QAAU,GACdjC,IAAI,kBALViB,KAAKe,MAAMC,QAAU,OACdjC,IAAI,GAKb,EAGDkC,OAAOC,eAAeC,OAAO,eAAgBhC","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import LightComponent from"/kempo-ui/components/LightComponent.js";import{html}from"/kempo-ui/lit-all.min.js";import{checkRole}from"../sdk.js";export default class Role extends LightComponent{static properties={requires:{type:String},exclude:{type:String},loading:{type:Boolean,state:!0},hasRole:{type:Boolean,state:!0}};constructor(){super(),this.requires="",this.exclude="",this.loading=!0,this.hasRole=!1}async connectedCallback(){super.connectedCallback(),await this.checkRole()}async checkRole(){try{const e=await checkRole({requires:this.requires||void 0,exclude:this.exclude||void 0});this.hasRole=e.hasRole}catch(e){console.error("Role check failed:",e),this.hasRole=!1}finally{this.loading=!1}}renderLightDom(){return this.loading?html``:this.hasRole?html`<slot></slot>`:html``}}window.customElements.define("k-role",Role);
2
+ //# sourceMappingURL=Role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/components/Role.js","names":["LightComponent","html","checkRole","Role","static","requires","type","String","exclude","loading","Boolean","state","hasRole","constructor","super","this","connectedCallback","data","undefined","error","console","renderLightDom","window","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\nimport { html } from '/kempo-ui/lit-all.min.js';\nimport { checkRole } from '../sdk.js';\n\nexport default class Role extends LightComponent {\n\tstatic properties = {\n\t\trequires: { type: String },\n\t\texclude: { type: String },\n\t\tloading: { type: Boolean, state: true },\n\t\thasRole: { type: Boolean, state: true }\n\t};\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.requires = '';\n\t\tthis.exclude = '';\n\t\tthis.loading = true;\n\t\tthis.hasRole = false;\n\t}\n\n\tasync connectedCallback() {\n\t\tsuper.connectedCallback();\n\t\tawait this.checkRole();\n\t}\n\n\tasync checkRole() {\n\t\ttry {\n\t\t\tconst data = await checkRole({\n\t\t\t\trequires: this.requires || undefined,\n\t\t\t\texclude: this.exclude || undefined\n\t\t\t});\n\t\t\tthis.hasRole = data.hasRole;\n\t\t} catch(error) {\n\t\t\tconsole.error('Role check failed:', error);\n\t\t\tthis.hasRole = false;\n\t\t} finally {\n\t\t\tthis.loading = false;\n\t\t}\n\t}\n\n\trenderLightDom() {\n\t\tif(this.loading) {\n\t\t\treturn html``;\n\t\t}\n\n\t\tif(!this.hasRole) {\n\t\t\treturn html``;\n\t\t}\n\n\t\treturn html`<slot></slot>`;\n\t}\n}\n\nwindow.customElements.define('k-role', Role);\n"],"mappings":"OAAOA,mBAAoB,gDAClBC,SAAY,kCACZC,cAAiB,2BAEX,MAAMC,aAAaH,eACjCI,kBAAoB,CACnBC,SAAU,CAAEC,KAAMC,QAClBC,QAAS,CAAEF,KAAMC,QACjBE,QAAS,CAAEH,KAAMI,QAASC,OAAO,GACjCC,QAAS,CAAEN,KAAMI,QAASC,OAAO,IAGlC,WAAAE,GACCC,QACAC,KAAKV,SAAW,GAChBU,KAAKP,QAAU,GACfO,KAAKN,SAAU,EACfM,KAAKH,SAAU,CAChB,CAEA,uBAAMI,GACLF,MAAME,0BACAD,KAAKb,WACZ,CAEA,eAAMA,GACL,IACC,MAAMe,QAAaf,UAAU,CAC5BG,SAAUU,KAAKV,eAAYa,EAC3BV,QAASO,KAAKP,cAAWU,IAE1BH,KAAKH,QAAUK,EAAKL,OACrB,CAAE,MAAMO,GACPC,QAAQD,MAAM,qBAAsBA,GACpCJ,KAAKH,SAAU,CAChB,CAAE,QACDG,KAAKN,SAAU,CAChB,CACD,CAEA,cAAAY,GACC,OAAGN,KAAKN,QACAR,IAAI,GAGRc,KAAKH,QAIFX,IAAI,gBAHHA,IAAI,EAIb,EAGDqB,OAAOC,eAAeC,OAAO,SAAUrB","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import LightComponent from"/kempo-ui/components/LightComponent.js";import{getSession}from"../sdk.js";export default class UserCreatedAt extends LightComponent{connectedCallback(){super.connectedCallback(),this.loadCreatedAt()}async loadCreatedAt(){const[e,t]=await getSession();if(e)return console.error("Failed to load user created date:",e.msg),void(this.textContent="");const o=new Date(t?.user?.createdAt);this.textContent=o.toLocaleDateString()}renderLightDom(){return"Loading..."}}customElements.define("k-user-created-at",UserCreatedAt);
2
+ //# sourceMappingURL=UserCreatedAt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/components/UserCreatedAt.js","names":["LightComponent","getSession","UserCreatedAt","connectedCallback","super","this","loadCreatedAt","error","session","console","msg","textContent","date","Date","user","createdAt","toLocaleDateString","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\nimport { getSession } from '../sdk.js';\n\nexport default class UserCreatedAt extends LightComponent {\n connectedCallback() {\n super.connectedCallback();\n this.loadCreatedAt();\n }\n\n async loadCreatedAt() {\n const [error, session] = await getSession();\n if(error){\n console.error('Failed to load user created date:', error.msg);\n this.textContent = '';\n return;\n }\n const date = new Date(session?.user?.createdAt);\n this.textContent = date.toLocaleDateString();\n }\n\n renderLightDom() {\n return 'Loading...';\n }\n}\n\ncustomElements.define('k-user-created-at', UserCreatedAt);\n"],"mappings":"OAAOA,mBAAoB,gDAClBC,eAAkB,2BAEZ,MAAMC,sBAAsBF,eACzC,iBAAAG,GACEC,MAAMD,oBACNE,KAAKC,eACP,CAEA,mBAAMA,GACJ,MAAOC,EAAOC,SAAiBP,aAC/B,GAAGM,EAGD,OAFAE,QAAQF,MAAM,oCAAqCA,EAAMG,UACzDL,KAAKM,YAAc,IAGrB,MAAMC,EAAO,IAAIC,KAAKL,GAASM,MAAMC,WACrCV,KAAKM,YAAcC,EAAKI,oBAC1B,CAEA,cAAAC,GACE,MAAO,YACT,EAGFC,eAAeC,OAAO,oBAAqBjB","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import LightComponent from"/kempo-ui/components/LightComponent.js";import{getSession}from"../sdk.js";export default class UserEmail extends LightComponent{connectedCallback(){super.connectedCallback(),this.loadUserEmail()}async loadUserEmail(){const[e,t]=await getSession();if(e)return console.error("Failed to load user email:",e.msg),void(this.textContent="");this.textContent=t?.user?.email||""}renderLightDom(){return"Loading..."}}customElements.define("k-user-email",UserEmail);
2
+ //# sourceMappingURL=UserEmail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/components/UserEmail.js","names":["LightComponent","getSession","UserEmail","connectedCallback","super","this","loadUserEmail","error","session","console","msg","textContent","user","email","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\nimport { getSession } from '../sdk.js';\n\nexport default class UserEmail extends LightComponent {\n connectedCallback() {\n super.connectedCallback();\n this.loadUserEmail();\n }\n\n async loadUserEmail() {\n const [error, session] = await getSession();\n if(error){\n console.error('Failed to load user email:', error.msg);\n this.textContent = '';\n return;\n }\n this.textContent = session?.user?.email || '';\n }\n\n renderLightDom() {\n return 'Loading...';\n }\n}\n\ncustomElements.define('k-user-email', UserEmail);\n"],"mappings":"OAAOA,mBAAoB,gDAClBC,eAAkB,2BAEZ,MAAMC,kBAAkBF,eACrC,iBAAAG,GACEC,MAAMD,oBACNE,KAAKC,eACP,CAEA,mBAAMA,GACJ,MAAOC,EAAOC,SAAiBP,aAC/B,GAAGM,EAGD,OAFAE,QAAQF,MAAM,6BAA8BA,EAAMG,UAClDL,KAAKM,YAAc,IAGrBN,KAAKM,YAAcH,GAASI,MAAMC,OAAS,EAC7C,CAEA,cAAAC,GACE,MAAO,YACT,EAGFC,eAAeC,OAAO,eAAgBd","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import LightComponent from"/kempo-ui/components/LightComponent.js";import{getSession}from"../sdk.js";export default class UserEmailVerified extends LightComponent{connectedCallback(){super.connectedCallback(),this.loadEmailVerified()}async loadEmailVerified(){const[e,i]=await getSession();if(e)return console.error("Failed to load email verified status:",e.msg),void(this.textContent="");this.textContent=i?.user?.emailVerified?"Yes":"No"}renderLightDom(){return"Loading..."}}customElements.define("k-user-email-verified",UserEmailVerified);
2
+ //# sourceMappingURL=UserEmailVerified.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/components/UserEmailVerified.js","names":["LightComponent","getSession","UserEmailVerified","connectedCallback","super","this","loadEmailVerified","error","session","console","msg","textContent","user","emailVerified","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\nimport { getSession } from '../sdk.js';\n\nexport default class UserEmailVerified extends LightComponent {\n connectedCallback() {\n super.connectedCallback();\n this.loadEmailVerified();\n }\n\n async loadEmailVerified() {\n const [error, session] = await getSession();\n if(error){\n console.error('Failed to load email verified status:', error.msg);\n this.textContent = '';\n return;\n }\n this.textContent = session?.user?.emailVerified ? 'Yes' : 'No';\n }\n\n renderLightDom() {\n return 'Loading...';\n }\n}\n\ncustomElements.define('k-user-email-verified', UserEmailVerified);\n"],"mappings":"OAAOA,mBAAoB,gDAClBC,eAAkB,2BAEZ,MAAMC,0BAA0BF,eAC7C,iBAAAG,GACEC,MAAMD,oBACNE,KAAKC,mBACP,CAEA,uBAAMA,GACJ,MAAOC,EAAOC,SAAiBP,aAC/B,GAAGM,EAGD,OAFAE,QAAQF,MAAM,wCAAyCA,EAAMG,UAC7DL,KAAKM,YAAc,IAGrBN,KAAKM,YAAcH,GAASI,MAAMC,cAAgB,MAAQ,IAC5D,CAEA,cAAAC,GACE,MAAO,YACT,EAGFC,eAAeC,OAAO,wBAAyBd","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import LightComponent from"/kempo-ui/components/LightComponent.js";import{getSession}from"../sdk.js";export default class UserName extends LightComponent{connectedCallback(){super.connectedCallback(),this.loadUserName()}async loadUserName(){const[e,t]=await getSession();if(e)return console.error("Failed to load user name:",e.msg),void(this.textContent="");this.textContent=t?.user?.name||""}renderLightDom(){return"Loading..."}}customElements.define("k-user-name",UserName);
2
+ //# sourceMappingURL=UserName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/components/UserName.js","names":["LightComponent","getSession","UserName","connectedCallback","super","this","loadUserName","error","session","console","msg","textContent","user","name","renderLightDom","customElements","define"],"sources":["0"],"sourcesContent":["import LightComponent from '/kempo-ui/components/LightComponent.js';\nimport { getSession } from '../sdk.js';\n\nexport default class UserName extends LightComponent {\n connectedCallback() {\n super.connectedCallback();\n this.loadUserName();\n }\n\n async loadUserName() {\n const [error, session] = await getSession();\n if(error){\n console.error('Failed to load user name:', error.msg);\n this.textContent = '';\n return;\n }\n this.textContent = session?.user?.name || '';\n }\n\n renderLightDom() {\n return 'Loading...';\n }\n}\n\ncustomElements.define('k-user-name', UserName);\n"],"mappings":"OAAOA,mBAAoB,gDAClBC,eAAkB,2BAEZ,MAAMC,iBAAiBF,eACpC,iBAAAG,GACEC,MAAMD,oBACNE,KAAKC,cACP,CAEA,kBAAMA,GACJ,MAAOC,EAAOC,SAAiBP,aAC/B,GAAGM,EAGD,OAFAE,QAAQF,MAAM,4BAA6BA,EAAMG,UACjDL,KAAKM,YAAc,IAGrBN,KAAKM,YAAcH,GAASI,MAAMC,MAAQ,EAC5C,CAEA,cAAAC,GACE,MAAO,YACT,EAGFC,eAAeC,OAAO,cAAed","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ const pendingRequests=new Map,createRequestKey=(e,t={})=>`${t.method||"GET"}:${e}:${t.body||""}`,dedupFetch=async(e,t)=>{const n=createRequestKey(e,t);if(pendingRequests.has(n)){const e=pendingRequests.get(n);return new Promise((t,n)=>{e.callbacks.add({resolve:t,reject:n})}).then(async e=>{if(!e.ok){let t;try{t=await e.json()}catch(t){return[{code:e.status,msg:"Service temporarily unavailable. Please try again later."},null]}return[{code:e.status,msg:t.error||t.message||"An error occurred"},null]}try{return[null,await e.json()]}catch(e){return[{code:500,msg:"Service temporarily unavailable. Please try again later."},null]}})}const r=new Set,a=fetch(e,t).then(e=>(r.forEach(({resolve:t})=>t(e.clone())),pendingRequests.delete(n),e)).catch(e=>{throw r.forEach(({reject:t})=>t(e)),pendingRequests.delete(n),e});pendingRequests.set(n,{fetchPromise:a,callbacks:r});try{const e=await a;if(!e.ok){let t;try{t=await e.json()}catch(t){return[{code:e.status,msg:"Service temporarily unavailable. Please try again later."},null]}return[{code:e.status,msg:t.error||t.message||"An error occurred"},null]}try{return[null,await e.json()]}catch(e){return[{code:500,msg:"Service temporarily unavailable. Please try again later."},null]}}catch(e){return"Service temporarily unavailable. Please try again later."===e.message||e.message.includes("Failed to fetch")?[{code:503,msg:"Service temporarily unavailable. Please try again later."},null]:[{code:500,msg:e.message||"An error occurred"},null]}};export const get=(e,t)=>{if(t){const n=Object.entries(t).filter(([,e])=>null!=e);if(n.length){const t=n.map(([e,t])=>Array.isArray(t)?`${encodeURIComponent(e)}=${t.map(e=>encodeURIComponent(e)).join(",")}`:`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&");return dedupFetch(`${e}?${t}`,{method:"GET"})}}return dedupFetch(e,{method:"GET"})};export const post=(e,t)=>dedupFetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});export const put=(e,t)=>dedupFetch(e,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});export const patch=(e,t)=>dedupFetch(e,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});export const del=(e,t)=>dedupFetch(e,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});
2
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/fetch.js","names":["pendingRequests","Map","createRequestKey","url","options","method","body","dedupFetch","async","key","has","existingRequest","get","Promise","resolve","reject","callbacks","add","then","response","ok","errorData","json","e","code","status","msg","error","message","Set","fetchPromise","fetch","forEach","clone","delete","catch","set","includes","params","entries","Object","filter","v","length","queryString","map","value","Array","isArray","encodeURIComponent","join","post","data","headers","JSON","stringify","put","patch","del"],"sources":["0"],"sourcesContent":["const pendingRequests = new Map();\n\nconst createRequestKey = (url, options = {}) => {\n const method = options.method || 'GET';\n const body = options.body || '';\n return `${method}:${url}:${body}`;\n};\n\nconst dedupFetch = async (url, options) => {\n const key = createRequestKey(url, options);\n if(pendingRequests.has(key)){\n const existingRequest = pendingRequests.get(key);\n return new Promise((resolve, reject) => {\n existingRequest.callbacks.add({ resolve, reject });\n }).then(async response => {\n if(!response.ok) {\n let errorData;\n try {\n errorData = await response.json();\n } catch(e) {\n return [{ code: response.status, msg: 'Service temporarily unavailable. Please try again later.' }, null];\n }\n return [{ code: response.status, msg: errorData.error || errorData.message || 'An error occurred' }, null];\n }\n try {\n return [null, await response.json()];\n } catch(e) {\n return [{ code: 500, msg: 'Service temporarily unavailable. Please try again later.' }, null];\n }\n });\n }\n const callbacks = new Set();\n const fetchPromise = fetch(url, options)\n .then(response => {\n callbacks.forEach(({ resolve }) => resolve(response.clone()));\n pendingRequests.delete(key);\n return response;\n })\n .catch(error => {\n callbacks.forEach(({ reject }) => reject(error));\n pendingRequests.delete(key);\n throw error;\n });\n pendingRequests.set(key, { fetchPromise, callbacks });\n try {\n const response = await fetchPromise;\n if(!response.ok) {\n let errorData;\n try {\n errorData = await response.json();\n } catch(e) {\n return [{ code: response.status, msg: 'Service temporarily unavailable. Please try again later.' }, null];\n }\n return [{ code: response.status, msg: errorData.error || errorData.message || 'An error occurred' }, null];\n }\n try {\n return [null, await response.json()];\n } catch(e) {\n return [{ code: 500, msg: 'Service temporarily unavailable. Please try again later.' }, null];\n }\n } catch(error) {\n if(error.message === 'Service temporarily unavailable. Please try again later.' || error.message.includes('Failed to fetch')) {\n return [{ code: 503, msg: 'Service temporarily unavailable. Please try again later.' }, null];\n }\n return [{ code: 500, msg: error.message || 'An error occurred' }, null];\n }\n};\n\nexport const get = (url, params) => {\n if(params){\n const entries = Object.entries(params).filter(([, v]) => v !== undefined && v !== null);\n if(entries.length){\n const queryString = entries\n .map(([key, value]) => {\n if(Array.isArray(value)){\n return `${encodeURIComponent(key)}=${value.map(v => encodeURIComponent(v)).join(',')}`;\n }\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n })\n .join('&');\n return dedupFetch(`${url}?${queryString}`, { method: 'GET' });\n }\n }\n return dedupFetch(url, { method: 'GET' });\n};\n\nexport const post = (url, data) => dedupFetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(data)\n});\n\nexport const put = (url, data) => dedupFetch(url, {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(data)\n});\n\nexport const patch = (url, data) => dedupFetch(url, {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(data)\n});\n\nexport const del = (url, data) => dedupFetch(url, {\n method: 'DELETE',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(data)\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M120-120v-80h720v80H120Zm320-160v-80h400v80H440Zm0-160v-80h400v80H440Zm0-160v-80h400v80H440ZM120-760v-80h720v80H120Zm160 440L120-480l160-160v320Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M120-120v-80h720v80H120Zm320-160v-80h400v80H440Zm0-160v-80h400v80H440Zm0-160v-80h400v80H440ZM120-760v-80h720v80H120Zm0 440v-320l160 160-160 160Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="m228-240 92-160q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 23-5.5 42.5T458-480L320-240h-92Zm360 0 92-160q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 23-5.5 42.5T818-480L680-240h-92ZM362.5-517.5Q380-535 380-560t-17.5-42.5Q345-620 320-620t-42.5 17.5Q260-585 260-560t17.5 42.5Q295-500 320-500t42.5-17.5Zm360 0Q740-535 740-560t-17.5-42.5Q705-620 680-620t-42.5 17.5Q620-585 620-560t17.5 42.5Q655-500 680-500t42.5-17.5ZM680-560Zm-360 0Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M396-200q-97 0-166.5-63T160-420q0-94 69.5-157T396-640h252L544-744l56-56 200 200-200 200-56-56 104-104H396q-63 0-109.5 40T240-420q0 60 46.5 100T396-280h284v80H396Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M440-122q-121-15-200.5-105.5T160-440q0-66 26-126.5T260-672l57 57q-38 34-57.5 79T240-440q0 88 56 155.5T440-202v80Zm80 0v-80q87-16 143.5-83T720-440q0-100-70-170t-170-70h-3l44 44-56 56-140-140 140-140 56 56-44 44h3q134 0 227 93t93 227q0 121-79.5 211.5T520-122Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M760-160v-80q0-17 11.5-28.5T800-280h80v-40H760v-40h120q17 0 28.5 11.5T920-320v40q0 17-11.5 28.5T880-240h-80v40h120v40H760Zm-525-80 185-291-172-269h106l124 200h4l123-200h107L539-531l186 291H618L482-457h-4L342-240H235Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M760-600v-80q0-17 11.5-28.5T800-720h80v-40H760v-40h120q17 0 28.5 11.5T920-760v40q0 17-11.5 28.5T880-680h-80v40h120v40H760ZM235-160l185-291-172-269h106l124 200h4l123-200h107L539-451l186 291H618L482-377h-4L342-160H235Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M280-200v-80h284q63 0 109.5-40T720-420q0-60-46.5-100T564-560H312l104 104-56 56-200-200 200-200 56 56-104 104h252q97 0 166.5 63T800-420q0 94-69.5 157T564-200H280Z"/></svg>
@@ -0,0 +1,2 @@
1
+ import{get,post,put,patch,del}from"./fetch.js";const API_BASE="/kempo/api";export const register=async({email:e,password:s,name:t})=>post(`${API_BASE}/auth/register/email`,{email:e,password:s,name:t});export const login=async({email:e,password:s})=>post(`${API_BASE}/auth/login/email`,{email:e,password:s});export const logout=async()=>post(`${API_BASE}/auth/logout`,{});export const getSession=async()=>get(`${API_BASE}/auth/session`);export const forgotPassword=async({email:e})=>post(`${API_BASE}/forgot-password`,{email:e});export const resetPassword=async({token:e,password:s,logoutAll:t=!1})=>post(`${API_BASE}/auth/reset-password`,{token:e,newPassword:s,logoutAll:t});export const changePassword=async({currentPassword:e,newPassword:s,logoutAll:t})=>post(`${API_BASE}/auth/change-password`,{currentPassword:e,newPassword:s,logoutAll:t});export const verifyEmail=async({token:e})=>post(`${API_BASE}/auth/verify-email`,{token:e});export const currentUserHasPermission=async({permission:e})=>get(`${API_BASE}/user/current/permissions`,{permission:e});export const currentUserHasAllPermissions=async({permissions:e})=>get(`${API_BASE}/user/current/permissions/all`,{permissions:e});export const currentUserHasSomePermissions=async({permissions:e})=>get(`${API_BASE}/user/current/permissions/some`,{permissions:e});export const getAllCurrentUserPermissions=async()=>get(`${API_BASE}/user/current/permissions/list`);export const userHasPermission=async({userid:e,permission:s})=>get(`${API_BASE}/user/${e}/permissions`,{permission:s});export const userHasAllPermissions=async({userid:e,permissions:s})=>get(`${API_BASE}/user/${e}/permissions/all`,{permissions:s});export const userHasSomePermissions=async({userid:e,permissions:s})=>get(`${API_BASE}/user/${e}/permissions/some`,{permissions:s});export const getAllUserPermissions=async({userid:e})=>get(`${API_BASE}/user/${e}/permissions/list`);export const getUsers=async({limit:e,offset:s}={})=>get(`${API_BASE}/user`,{limit:e,offset:s});export const searchUsers=async({q:e,limit:s,offset:t,inGroup:o,notInGroup:n}={})=>get(`${API_BASE}/user/search`,{q:e,limit:s,offset:t,inGroup:o,notInGroup:n});export const createUser=async({name:e,email:s,password:t,emailVerified:o})=>post(`${API_BASE}/user/create`,{name:e,email:s,password:t,emailVerified:o});export const deleteUsers=async e=>del(`${API_BASE}/user`,{ids:e});export const updateUser=async({id:e,name:s,email:t,emailVerified:o,createdAt:n})=>patch(`${API_BASE}/user`,{id:e,name:s,email:t,emailVerified:o,createdAt:n});export const getUser=async e=>get(`${API_BASE}/user/${e}`);export const getUserSessions=async(e,{limit:s,offset:t}={})=>get(`${API_BASE}/user/${e}/sessions`,{limit:s,offset:t});export const deleteUserSession=async(e,s)=>del(`${API_BASE}/user/${e}/sessions`,{sessionToken:s});export const deleteExpiredUserSessions=async e=>del(`${API_BASE}/user/${e}/sessions/expired`);export const getUserGroups=async(e,{limit:s,offset:t}={})=>get(`${API_BASE}/user/${e}/groups`,{limit:s,offset:t});export const addUserToGroup=async(e,s)=>post(`${API_BASE}/user/${e}/groups`,{groupName:s});export const removeUserFromGroup=async(e,s)=>del(`${API_BASE}/user/${e}/groups`,{groupName:s});export const listGroups=async({limit:e,offset:s,owner:t}={})=>get(`${API_BASE}/groups`,{limit:e,offset:s,owner:t});export const createGroup=async({name:e,description:s})=>post(`${API_BASE}/groups`,{name:e,description:s});export const updateGroup=async({name:e,newName:s,description:t})=>patch(`${API_BASE}/groups`,{name:e,newName:s,description:t});export const deleteGroups=async e=>del(`${API_BASE}/groups`,{names:e});export const getGroup=async e=>get(`${API_BASE}/groups/${encodeURIComponent(e)}`);export const getGroupMembers=async(e,{limit:s,offset:t}={})=>get(`${API_BASE}/groups/${encodeURIComponent(e)}/members`,{limit:s,offset:t});export const addMemberToGroup=async(e,s)=>post(`${API_BASE}/groups/${encodeURIComponent(e)}/members`,{userId:s});export const removeMemberFromGroup=async(e,s)=>del(`${API_BASE}/groups/${encodeURIComponent(e)}/members`,{userId:s});export const getGroupPermissions=async e=>get(`${API_BASE}/groups/${encodeURIComponent(e)}/permissions`);export const addPermissionToGroup=async(e,s)=>post(`${API_BASE}/groups/${encodeURIComponent(e)}/permissions`,{permissionName:s});export const removePermissionFromGroup=async(e,s)=>del(`${API_BASE}/groups/${encodeURIComponent(e)}/permissions`,{permissionName:s});export const listPermissions=async({limit:e,offset:s,owner:t}={})=>get(`${API_BASE}/permissions`,{limit:e,offset:s,owner:t});export const createPermissions=async e=>post(`${API_BASE}/permissions`,{permissions:e});export const updatePermission=async({name:e,description:s})=>patch(`${API_BASE}/permissions`,{name:e,description:s});export const deletePermissions=async e=>del(`${API_BASE}/permissions`,{names:e});export const getSetting=async(e,s)=>get(`${API_BASE}/settings/${encodeURIComponent(e)}/${encodeURIComponent(s)}`);export const listSettings=async({owner:e,limit:s,offset:t}={})=>get(`${API_BASE}/settings/${encodeURIComponent(e)}`,{limit:s,offset:t});export const setSetting=async(e,s,t)=>post(`${API_BASE}/settings/${encodeURIComponent(e)}/${encodeURIComponent(s)}`,t);export const deleteSetting=async(e,s)=>del(`${API_BASE}/settings/${encodeURIComponent(e)}/${encodeURIComponent(s)}`);export const listPages=async()=>get(`${API_BASE}/pages`);export const listTemplates=async()=>get(`${API_BASE}/templates`);export const listDirectories=async()=>get(`${API_BASE}/pages/directories`);export const getPage=async e=>get(`${API_BASE}/pages/file`,{file:e});export const createPage=async({directory:e,name:s,template:t})=>post(`${API_BASE}/pages`,{directory:e,name:s,template:t});export const updatePage=async({file:e,name:s,title:t,description:o,author:n,template:r,contents:a})=>put(`${API_BASE}/pages/file`,{file:e,name:s,title:t,description:o,author:n,template:r,contents:a});export const deletePages=async e=>del(`${API_BASE}/pages`,{files:e});export const disablePage=async e=>put(`${API_BASE}/pages/disable`,{file:e});export const enablePage=async e=>put(`${API_BASE}/pages/enable`,{file:e});export const movePage=async({file:e,newFile:s})=>patch(`${API_BASE}/pages/file`,{file:e,newFile:s});export const getTemplate=async e=>get(`${API_BASE}/templates/file`,{file:e});export const createTemplate=async({directory:e,name:s,copyFrom:t})=>post(`${API_BASE}/templates`,{directory:e,name:s,copyFrom:t});export const updateTemplate=async({file:e,name:s,author:t,markup:o})=>put(`${API_BASE}/templates/file`,{file:e,name:s,author:t,markup:o});export const deleteTemplates=async e=>del(`${API_BASE}/templates`,{files:e});export const disableTemplate=async e=>put(`${API_BASE}/templates/disable`,{file:e});export const enableTemplate=async e=>put(`${API_BASE}/templates/enable`,{file:e});export const moveTemplate=async({file:e,newFile:s})=>patch(`${API_BASE}/templates/file`,{file:e,newFile:s});export const listFragments=async()=>get(`${API_BASE}/fragments`);export const getFragment=async e=>get(`${API_BASE}/fragments/file`,{file:e});export const createFragment=async({directory:e,name:s})=>post(`${API_BASE}/fragments`,{directory:e,name:s});export const updateFragment=async({file:e,author:s,markup:t})=>put(`${API_BASE}/fragments/file`,{file:e,author:s,markup:t});export const deleteFragments=async e=>del(`${API_BASE}/fragments`,{files:e});export const moveFragment=async({file:e,newFile:s})=>patch(`${API_BASE}/fragments/file`,{file:e,newFile:s});export const disableFragment=async e=>put(`${API_BASE}/fragments/disable`,{file:e});export const enableFragment=async e=>put(`${API_BASE}/fragments/enable`,{file:e});export const listGlobalContent=async()=>get(`${API_BASE}/globals`);export const getGlobalContent=async e=>get(`${API_BASE}/globals/entry`,{id:e});export const createGlobalContent=async({name:e,location:s,priority:t})=>post(`${API_BASE}/globals`,{name:e,location:s,priority:t});export const updateGlobalContent=async({id:e,name:s,location:t,priority:o,markup:n})=>put(`${API_BASE}/globals/entry`,{id:e,name:s,location:t,priority:o,markup:n});export const deleteGlobalContent=async e=>del(`${API_BASE}/globals`,{ids:e});export const disableGlobalContent=async e=>put(`${API_BASE}/globals/disable`,{id:e});export const enableGlobalContent=async e=>put(`${API_BASE}/globals/enable`,{id:e});export const listExtensions=async({limit:e,offset:s}={})=>get(`${API_BASE}/extensions`,{limit:e,offset:s});export const listAvailableExtensions=async()=>get(`${API_BASE}/extensions/available`);export const listKnownExtensions=async()=>get(`${API_BASE}/extensions/known`);export const installExtension=async e=>post(`${API_BASE}/extensions`,{name:e});export const uninstallExtension=async e=>del(`${API_BASE}/extensions`,{name:e});export const enableExtension=async e=>post(`${API_BASE}/extensions/${encodeURIComponent(e)}/enable`,{});export const disableExtension=async e=>post(`${API_BASE}/extensions/${encodeURIComponent(e)}/disable`,{});export const listAdminGlobalContent=async()=>get(`${API_BASE}/admin-globals`);export const getAdminGlobalContent=async e=>get(`${API_BASE}/admin-globals/${encodeURIComponent(e)}`);export const createAdminGlobalContent=async({name:e,location:s,priority:t,owner:o,markup:n})=>post(`${API_BASE}/admin-globals`,{name:e,location:s,priority:t,owner:o,markup:n});export const updateAdminGlobalContent=async(e,{name:s,location:t,priority:o,markup:n})=>put(`${API_BASE}/admin-globals/${encodeURIComponent(e)}`,{name:s,location:t,priority:o,markup:n});export const deleteAdminGlobalContent=async e=>del(`${API_BASE}/admin-globals`,{ids:e});export const enableAdminGlobalContent=async e=>put(`${API_BASE}/admin-globals/${encodeURIComponent(e)}/enable`,{});export const disableAdminGlobalContent=async e=>put(`${API_BASE}/admin-globals/${encodeURIComponent(e)}/disable`,{});
2
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src/kempo/sdk.js","names":["get","post","put","patch","del","API_BASE","register","async","email","password","name","login","logout","getSession","forgotPassword","resetPassword","token","logoutAll","newPassword","changePassword","currentPassword","verifyEmail","currentUserHasPermission","permission","currentUserHasAllPermissions","permissions","currentUserHasSomePermissions","getAllCurrentUserPermissions","userHasPermission","userid","userHasAllPermissions","userHasSomePermissions","getAllUserPermissions","getUsers","limit","offset","searchUsers","q","inGroup","notInGroup","createUser","emailVerified","deleteUsers","ids","updateUser","id","createdAt","getUser","getUserSessions","deleteUserSession","sessionToken","deleteExpiredUserSessions","getUserGroups","addUserToGroup","groupName","removeUserFromGroup","listGroups","owner","createGroup","description","updateGroup","newName","deleteGroups","names","getGroup","encodeURIComponent","getGroupMembers","addMemberToGroup","userId","removeMemberFromGroup","getGroupPermissions","addPermissionToGroup","permissionName","removePermissionFromGroup","listPermissions","createPermissions","updatePermission","deletePermissions","getSetting","listSettings","setSetting","data","deleteSetting","listPages","listTemplates","listDirectories","getPage","file","createPage","directory","template","updatePage","title","author","contents","deletePages","files","disablePage","enablePage","movePage","newFile","getTemplate","createTemplate","copyFrom","updateTemplate","markup","deleteTemplates","disableTemplate","enableTemplate","moveTemplate","listFragments","getFragment","createFragment","updateFragment","deleteFragments","moveFragment","disableFragment","enableFragment","listGlobalContent","getGlobalContent","createGlobalContent","location","priority","updateGlobalContent","deleteGlobalContent","disableGlobalContent","enableGlobalContent","listExtensions","listAvailableExtensions","listKnownExtensions","installExtension","uninstallExtension","enableExtension","disableExtension","listAdminGlobalContent","getAdminGlobalContent","createAdminGlobalContent","updateAdminGlobalContent","deleteAdminGlobalContent","enableAdminGlobalContent","disableAdminGlobalContent"],"sources":["0"],"sourcesContent":["import { get, post, put, patch, del } from './fetch.js';\nconst API_BASE = '/kempo/api';\n\nexport const register = async ({ email, password, name }) =>\n post(`${API_BASE}/auth/register/email`, { email, password, name });\n\nexport const login = async ({ email, password }) =>\n post(`${API_BASE}/auth/login/email`, { email, password });\n\nexport const logout = async () => post(`${API_BASE}/auth/logout`, {});\n\nexport const getSession = async () => get(`${API_BASE}/auth/session`);\n\nexport const forgotPassword = async ({ email }) =>\n post(`${API_BASE}/forgot-password`, { email });\n\nexport const resetPassword = async ({ token, password, logoutAll = false }) =>\n post(`${API_BASE}/auth/reset-password`, { token, newPassword: password, logoutAll });\n \nexport const changePassword = async ({ currentPassword, newPassword, logoutAll }) => \n post(`${API_BASE}/auth/change-password`, { currentPassword, newPassword, logoutAll });\n\nexport const verifyEmail = async ({ token }) =>\n post(`${API_BASE}/auth/verify-email`, { token });\n\nexport const currentUserHasPermission = async ({ permission }) =>\n get(`${API_BASE}/user/current/permissions`, { permission });\n\nexport const currentUserHasAllPermissions = async ({ permissions }) =>\n get(`${API_BASE}/user/current/permissions/all`, { permissions });\n\nexport const currentUserHasSomePermissions = async ({ permissions }) =>\n get(`${API_BASE}/user/current/permissions/some`, { permissions });\n\nexport const getAllCurrentUserPermissions = async () =>\n get(`${API_BASE}/user/current/permissions/list`);\n\nexport const userHasPermission = async ({ userid, permission }) =>\n get(`${API_BASE}/user/${userid}/permissions`, { permission });\n\nexport const userHasAllPermissions = async ({ userid, permissions }) =>\n get(`${API_BASE}/user/${userid}/permissions/all`, { permissions });\n\nexport const userHasSomePermissions = async ({ userid, permissions }) =>\n get(`${API_BASE}/user/${userid}/permissions/some`, { permissions });\n\nexport const getAllUserPermissions = async ({ userid }) =>\n get(`${API_BASE}/user/${userid}/permissions/list`);\n\nexport const getUsers = async ({ limit, offset } = {}) =>\n get(`${API_BASE}/user`, { limit, offset });\n\nexport const searchUsers = async ({ q, limit, offset, inGroup, notInGroup } = {}) =>\n get(`${API_BASE}/user/search`, { q, limit, offset, inGroup, notInGroup });\n\nexport const createUser = async ({ name, email, password, emailVerified }) =>\n post(`${API_BASE}/user/create`, { name, email, password, emailVerified });\n\nexport const deleteUsers = async (ids) =>\n del(`${API_BASE}/user`, { ids });\n\nexport const updateUser = async ({ id, name, email, emailVerified, createdAt }) =>\n patch(`${API_BASE}/user`, { id, name, email, emailVerified, createdAt });\n\nexport const getUser = async (userid) =>\n get(`${API_BASE}/user/${userid}`);\n\nexport const getUserSessions = async (userid, { limit, offset } = {}) =>\n get(`${API_BASE}/user/${userid}/sessions`, { limit, offset });\n\nexport const deleteUserSession = async (userid, sessionToken) =>\n del(`${API_BASE}/user/${userid}/sessions`, { sessionToken });\n\nexport const deleteExpiredUserSessions = async (userid) =>\n del(`${API_BASE}/user/${userid}/sessions/expired`);\n\nexport const getUserGroups = async (userid, { limit, offset } = {}) =>\n get(`${API_BASE}/user/${userid}/groups`, { limit, offset });\n\nexport const addUserToGroup = async (userid, groupName) =>\n post(`${API_BASE}/user/${userid}/groups`, { groupName });\n\nexport const removeUserFromGroup = async (userid, groupName) =>\n del(`${API_BASE}/user/${userid}/groups`, { groupName });\n\nexport const listGroups = async ({ limit, offset, owner } = {}) =>\n get(`${API_BASE}/groups`, { limit, offset, owner });\n\nexport const createGroup = async ({ name, description }) =>\n post(`${API_BASE}/groups`, { name, description });\n\nexport const updateGroup = async ({ name, newName, description }) =>\n patch(`${API_BASE}/groups`, { name, newName, description });\n\nexport const deleteGroups = async (names) =>\n del(`${API_BASE}/groups`, { names });\n\nexport const getGroup = async (name) =>\n get(`${API_BASE}/groups/${encodeURIComponent(name)}`);\n\nexport const getGroupMembers = async (name, { limit, offset } = {}) =>\n get(`${API_BASE}/groups/${encodeURIComponent(name)}/members`, { limit, offset });\n\nexport const addMemberToGroup = async (name, userId) =>\n post(`${API_BASE}/groups/${encodeURIComponent(name)}/members`, { userId });\n\nexport const removeMemberFromGroup = async (name, userId) =>\n del(`${API_BASE}/groups/${encodeURIComponent(name)}/members`, { userId });\n\nexport const getGroupPermissions = async (name) =>\n get(`${API_BASE}/groups/${encodeURIComponent(name)}/permissions`);\n\nexport const addPermissionToGroup = async (name, permissionName) =>\n post(`${API_BASE}/groups/${encodeURIComponent(name)}/permissions`, { permissionName });\n\nexport const removePermissionFromGroup = async (name, permissionName) =>\n del(`${API_BASE}/groups/${encodeURIComponent(name)}/permissions`, { permissionName });\n\nexport const listPermissions = async ({ limit, offset, owner } = {}) =>\n get(`${API_BASE}/permissions`, { limit, offset, owner });\n\nexport const createPermissions = async (permissions) =>\n post(`${API_BASE}/permissions`, { permissions });\n\nexport const updatePermission = async ({ name, description }) =>\n patch(`${API_BASE}/permissions`, { name, description });\n\nexport const deletePermissions = async (names) =>\n del(`${API_BASE}/permissions`, { names });\n\nexport const getSetting = async (owner, name) =>\n get(`${API_BASE}/settings/${encodeURIComponent(owner)}/${encodeURIComponent(name)}`);\n\nexport const listSettings = async ({ owner, limit, offset } = {}) =>\n get(`${API_BASE}/settings/${encodeURIComponent(owner)}`, { limit, offset });\n\nexport const setSetting = async (owner, name, data) =>\n post(`${API_BASE}/settings/${encodeURIComponent(owner)}/${encodeURIComponent(name)}`, data);\n\nexport const deleteSetting = async (owner, name) =>\n del(`${API_BASE}/settings/${encodeURIComponent(owner)}/${encodeURIComponent(name)}`);\n\n/*\n Pages\n*/\n\nexport const listPages = async () =>\n get(`${API_BASE}/pages`);\n\nexport const listTemplates = async () =>\n get(`${API_BASE}/templates`);\n\nexport const listDirectories = async () =>\n get(`${API_BASE}/pages/directories`);\n\nexport const getPage = async (file) =>\n get(`${API_BASE}/pages/file`, { file });\n\nexport const createPage = async ({ directory, name, template }) =>\n post(`${API_BASE}/pages`, { directory, name, template });\n\nexport const updatePage = async ({ file, name, title, description, author, template, contents }) =>\n put(`${API_BASE}/pages/file`, { file, name, title, description, author, template, contents });\n\nexport const deletePages = async (files) =>\n del(`${API_BASE}/pages`, { files });\n\nexport const disablePage = async (file) =>\n put(`${API_BASE}/pages/disable`, { file });\n\nexport const enablePage = async (file) =>\n put(`${API_BASE}/pages/enable`, { file });\n\nexport const movePage = async ({ file, newFile }) =>\n patch(`${API_BASE}/pages/file`, { file, newFile });\n\n/*\n Templates\n*/\n\nexport const getTemplate = async (file) =>\n get(`${API_BASE}/templates/file`, { file });\n\nexport const createTemplate = async ({ directory, name, copyFrom }) =>\n post(`${API_BASE}/templates`, { directory, name, copyFrom });\n\nexport const updateTemplate = async ({ file, name, author, markup }) =>\n put(`${API_BASE}/templates/file`, { file, name, author, markup });\n\nexport const deleteTemplates = async (files) =>\n del(`${API_BASE}/templates`, { files });\n\nexport const disableTemplate = async (file) =>\n put(`${API_BASE}/templates/disable`, { file });\n\nexport const enableTemplate = async (file) =>\n put(`${API_BASE}/templates/enable`, { file });\n\nexport const moveTemplate = async ({ file, newFile }) =>\n patch(`${API_BASE}/templates/file`, { file, newFile });\n\n/*\n Fragments\n*/\n\nexport const listFragments = async () =>\n get(`${API_BASE}/fragments`);\n\nexport const getFragment = async (file) =>\n get(`${API_BASE}/fragments/file`, { file });\n\nexport const createFragment = async ({ directory, name }) =>\n post(`${API_BASE}/fragments`, { directory, name });\n\nexport const updateFragment = async ({ file, author, markup }) =>\n put(`${API_BASE}/fragments/file`, { file, author, markup });\n\nexport const deleteFragments = async (files) =>\n del(`${API_BASE}/fragments`, { files });\n\nexport const moveFragment = async ({ file, newFile }) =>\n patch(`${API_BASE}/fragments/file`, { file, newFile });\n\nexport const disableFragment = async (file) =>\n put(`${API_BASE}/fragments/disable`, { file });\n\nexport const enableFragment = async (file) =>\n put(`${API_BASE}/fragments/enable`, { file });\n\n/*\n Global Content\n*/\n\nexport const listGlobalContent = async () =>\n get(`${API_BASE}/globals`);\n\nexport const getGlobalContent = async (id) =>\n get(`${API_BASE}/globals/entry`, { id });\n\nexport const createGlobalContent = async ({ name, location, priority }) =>\n post(`${API_BASE}/globals`, { name, location, priority });\n\nexport const updateGlobalContent = async ({ id, name, location, priority, markup }) =>\n put(`${API_BASE}/globals/entry`, { id, name, location, priority, markup });\n\nexport const deleteGlobalContent = async (ids) =>\n del(`${API_BASE}/globals`, { ids });\n\nexport const disableGlobalContent = async (id) =>\n put(`${API_BASE}/globals/disable`, { id });\n\nexport const enableGlobalContent = async (id) =>\n put(`${API_BASE}/globals/enable`, { id });\n\n/*\n Extensions\n*/\n\nexport const listExtensions = async ({ limit, offset } = {}) =>\n get(`${API_BASE}/extensions`, { limit, offset });\n\nexport const listAvailableExtensions = async () =>\n get(`${API_BASE}/extensions/available`);\n\nexport const listKnownExtensions = async () =>\n get(`${API_BASE}/extensions/known`);\n\nexport const installExtension = async (name) =>\n post(`${API_BASE}/extensions`, { name });\n\nexport const uninstallExtension = async (name) =>\n del(`${API_BASE}/extensions`, { name });\n\nexport const enableExtension = async (name) =>\n post(`${API_BASE}/extensions/${encodeURIComponent(name)}/enable`, {});\n\nexport const disableExtension = async (name) =>\n post(`${API_BASE}/extensions/${encodeURIComponent(name)}/disable`, {});\n\n/*\n Admin Global Content\n*/\n\nexport const listAdminGlobalContent = async () =>\n get(`${API_BASE}/admin-globals`);\n\nexport const getAdminGlobalContent = async (id) =>\n get(`${API_BASE}/admin-globals/${encodeURIComponent(id)}`);\n\nexport const createAdminGlobalContent = async ({ name, location, priority, owner, markup }) =>\n post(`${API_BASE}/admin-globals`, { name, location, priority, owner, markup });\n\nexport const updateAdminGlobalContent = async (id, { name, location, priority, markup }) =>\n put(`${API_BASE}/admin-globals/${encodeURIComponent(id)}`, { name, location, priority, markup });\n\nexport const deleteAdminGlobalContent = async (ids) =>\n del(`${API_BASE}/admin-globals`, { ids });\n\nexport const enableAdminGlobalContent = async (id) =>\n put(`${API_BASE}/admin-globals/${encodeURIComponent(id)}/enable`, {});\n\nexport const disableAdminGlobalContent = async (id) =>\n put(`${API_BASE}/admin-globals/${encodeURIComponent(id)}/disable`, {});\n\n"],"mappings":"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","ignoreList":[]}