@tulip-systems/core 0.5.13 → 0.5.15

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 (229) hide show
  1. package/dist/auth/client.d.mts +5 -4
  2. package/dist/auth/client.mjs +6 -5
  3. package/dist/auth.mjs +2 -2
  4. package/dist/components/client.mjs +2 -2
  5. package/dist/components/common/icons.d.mts +52 -52
  6. package/dist/components/common/status.d.mts +3 -3
  7. package/dist/components/editor/components/content.client.d.mts +2 -2
  8. package/dist/components/editor/components/editor.client.d.mts +6 -6
  9. package/dist/components/editor/components/editor.client.d.mts.map +1 -1
  10. package/dist/components/editor/components/menu.client.d.mts +3 -3
  11. package/dist/components/header/back-button.client.d.mts +2 -2
  12. package/dist/components/header/bottom-bar.client.d.mts +3 -3
  13. package/dist/components/header/breadcrumbs.client.d.mts +7 -7
  14. package/dist/components/header/header.client.d.mts +2 -2
  15. package/dist/components/header/mobile-nav-switcher.client.d.mts +2 -2
  16. package/dist/components/header/top-bar.client.d.mts +4 -4
  17. package/dist/components/layouts/admin-content.client.d.mts +2 -2
  18. package/dist/components/layouts/admin-error-pages.d.mts +4 -4
  19. package/dist/components/layouts/admin-layout.d.mts +2 -2
  20. package/dist/components/layouts/admin-layout.mjs +1 -1
  21. package/dist/components/layouts/admin-layout.mjs.map +1 -1
  22. package/dist/components/layouts/admin-loading.d.mts +2 -2
  23. package/dist/components/layouts/empty-page.d.mts +4 -4
  24. package/dist/components/layouts/error-page.d.mts +9 -9
  25. package/dist/components/layouts/error-sections.d.mts +5 -5
  26. package/dist/components/layouts/list-layout.d.mts +2 -2
  27. package/dist/components/layouts/providers.client.d.mts +2 -2
  28. package/dist/components/layouts/root-error-pages.d.mts +2 -2
  29. package/dist/components/layouts/root-layout.server.d.mts +4 -4
  30. package/dist/components/layouts/root-layout.server.d.mts.map +1 -1
  31. package/dist/components/layouts/root-loading.d.mts +2 -2
  32. package/dist/components/layouts/tab-layout.d.mts +2 -2
  33. package/dist/components/lists/data-list.d.mts +5 -5
  34. package/dist/components/lists/data-stack.d.mts +8 -8
  35. package/dist/components/navigation/admin-sidebar-header.client.mjs +3 -2
  36. package/dist/components/navigation/admin-sidebar-header.client.mjs.map +1 -1
  37. package/dist/components/navigation/admin-sidebar-paths.client.d.mts +10 -10
  38. package/dist/components/ui/accordion.d.mts +5 -5
  39. package/dist/components/ui/alert-dialog.d.mts +12 -12
  40. package/dist/components/ui/alert.d.mts +6 -6
  41. package/dist/components/ui/aspect-ratio.d.mts +2 -2
  42. package/dist/components/ui/avatar.client.d.mts +4 -4
  43. package/dist/components/ui/badge.d.mts +4 -4
  44. package/dist/components/ui/breadcrumb.d.mts +8 -8
  45. package/dist/components/ui/button.d.mts +4 -4
  46. package/dist/components/ui/calendar.d.mts +3 -3
  47. package/dist/components/ui/card.d.mts +7 -7
  48. package/dist/components/ui/carousel.d.mts +6 -6
  49. package/dist/components/ui/chart.client.d.mts +5 -5
  50. package/dist/components/ui/checkbox.d.mts +2 -2
  51. package/dist/components/ui/collapsible.client.d.mts +4 -4
  52. package/dist/components/ui/color-picker.client.d.mts +2 -2
  53. package/dist/components/ui/combobox-dropdown.client.d.mts +2 -2
  54. package/dist/components/ui/combobox.client.d.mts +2 -2
  55. package/dist/components/ui/command.d.mts +10 -10
  56. package/dist/components/ui/context-menu.d.mts +16 -16
  57. package/dist/components/ui/date-picker.client.d.mts +2 -2
  58. package/dist/components/ui/dialog.client.d.mts +11 -11
  59. package/dist/components/ui/drawer.client.d.mts +11 -11
  60. package/dist/components/ui/dropdown-menu.d.mts +16 -16
  61. package/dist/components/ui/form.client.d.mts +7 -7
  62. package/dist/components/ui/hover-card.client.d.mts +4 -4
  63. package/dist/components/ui/input-recipient.d.mts +2 -2
  64. package/dist/components/ui/input.d.mts +2 -2
  65. package/dist/components/ui/label.d.mts +2 -2
  66. package/dist/components/ui/navigation-menu.d.mts +11 -11
  67. package/dist/components/ui/pagination.d.mts +8 -8
  68. package/dist/components/ui/popover.d.mts +5 -5
  69. package/dist/components/ui/progress.client.d.mts +2 -2
  70. package/dist/components/ui/radio-group.d.mts +3 -3
  71. package/dist/components/ui/resizable.client.d.mts +4 -4
  72. package/dist/components/ui/scroll-area.d.mts +3 -3
  73. package/dist/components/ui/select.client.d.mts +11 -11
  74. package/dist/components/ui/separator.d.mts +2 -2
  75. package/dist/components/ui/sheet.client.d.mts +9 -9
  76. package/dist/components/ui/sidebar.client.d.mts +26 -26
  77. package/dist/components/ui/skeleton.d.mts +2 -2
  78. package/dist/components/ui/slider.d.mts +2 -2
  79. package/dist/components/ui/sonner.client.d.mts +2 -2
  80. package/dist/components/ui/sonner.client.mjs +1 -1
  81. package/dist/components/ui/switch.d.mts +2 -2
  82. package/dist/components/ui/tabs.d.mts +5 -5
  83. package/dist/components/ui/textarea.d.mts +2 -2
  84. package/dist/components/ui/time-input.client.d.mts +2 -2
  85. package/dist/components/ui/toggle-group.client.d.mts +3 -3
  86. package/dist/components/ui/toggle.d.mts +4 -4
  87. package/dist/components/ui/toggle.d.mts.map +1 -1
  88. package/dist/components/ui/tooltip.client.d.mts +5 -5
  89. package/dist/components.mjs +2 -2
  90. package/dist/lib/client.mjs +1 -1
  91. package/dist/lib/hooks/use-action.d.mts +2 -2
  92. package/dist/lib/hooks/use-indicator.d.mts +2 -2
  93. package/dist/modules/auth/components/allowed.client.d.mts +2 -2
  94. package/dist/modules/auth/components/allowed.client.mjs +2 -3
  95. package/dist/modules/auth/components/allowed.client.mjs.map +1 -1
  96. package/dist/modules/auth/components/auth-layout.server.d.mts +2 -2
  97. package/dist/modules/auth/components/auth-layout.server.d.mts.map +1 -1
  98. package/dist/modules/auth/components/auth-loading.d.mts +2 -2
  99. package/dist/modules/auth/components/create-first-user-page.client.d.mts +2 -2
  100. package/dist/modules/auth/components/create-first-user-page.client.mjs +4 -3
  101. package/dist/modules/auth/components/create-first-user-page.client.mjs.map +1 -1
  102. package/dist/modules/auth/components/forget-password-page.client.d.mts +2 -2
  103. package/dist/modules/auth/components/forget-password-page.client.mjs +4 -3
  104. package/dist/modules/auth/components/forget-password-page.client.mjs.map +1 -1
  105. package/dist/modules/auth/components/guard-first-user.server.d.mts +2 -2
  106. package/dist/modules/auth/components/guard-first-user.server.d.mts.map +1 -1
  107. package/dist/modules/auth/components/guard.server.d.mts +3 -2
  108. package/dist/modules/auth/components/guard.server.d.mts.map +1 -1
  109. package/dist/modules/auth/components/guard.server.mjs +1 -0
  110. package/dist/modules/auth/components/guard.server.mjs.map +1 -1
  111. package/dist/modules/auth/components/login-page.client.d.mts +2 -2
  112. package/dist/modules/auth/components/login-page.client.mjs +4 -3
  113. package/dist/modules/auth/components/login-page.client.mjs.map +1 -1
  114. package/dist/modules/auth/components/reset-password-page.client.d.mts +2 -2
  115. package/dist/modules/auth/components/reset-password-page.client.mjs +4 -3
  116. package/dist/modules/auth/components/reset-password-page.client.mjs.map +1 -1
  117. package/dist/modules/auth/components/update-password-command.d.mts +2 -2
  118. package/dist/modules/auth/components/update-password-command.mjs +1 -1
  119. package/dist/modules/auth/handler/{client.client.d.mts → create-client.client.d.mts} +288 -168
  120. package/dist/modules/auth/handler/create-client.client.d.mts.map +1 -0
  121. package/dist/modules/auth/handler/create-client.client.mjs +26 -0
  122. package/dist/modules/auth/handler/create-client.client.mjs.map +1 -0
  123. package/dist/modules/auth/handler/init.d.mts +133 -133
  124. package/dist/modules/auth/handler/init.d.mts.map +1 -1
  125. package/dist/modules/auth/hooks/use-auth-client.d.mts +24 -0
  126. package/dist/modules/auth/hooks/use-auth-client.d.mts.map +1 -0
  127. package/dist/modules/auth/hooks/use-auth-client.mjs +31 -0
  128. package/dist/modules/auth/hooks/use-auth-client.mjs.map +1 -0
  129. package/dist/modules/auth/hooks/use-permission.d.mts +8 -35
  130. package/dist/modules/auth/hooks/use-permission.d.mts.map +1 -1
  131. package/dist/modules/auth/hooks/use-permission.mjs +47 -93
  132. package/dist/modules/auth/hooks/use-permission.mjs.map +1 -1
  133. package/dist/modules/auth/hooks/use-session.d.mts +5 -119
  134. package/dist/modules/auth/hooks/use-session.d.mts.map +1 -1
  135. package/dist/modules/auth/hooks/use-session.mjs +15 -17
  136. package/dist/modules/auth/hooks/use-session.mjs.map +1 -1
  137. package/dist/modules/auth/lib/helpers.server.mjs +1 -1
  138. package/dist/modules/auth/lib/validators.d.mts +2 -2
  139. package/dist/modules/auth/lib/validators.d.mts.map +1 -1
  140. package/dist/modules/commands/components/alert-dialog-command.client.d.mts +11 -11
  141. package/dist/modules/commands/components/click-command.client.d.mts +2 -2
  142. package/dist/modules/commands/components/command-trigger.client.d.mts +4 -4
  143. package/dist/modules/commands/components/dialog-command.client.d.mts +8 -8
  144. package/dist/modules/commands/components/dropdown-command.client.d.mts +5 -5
  145. package/dist/modules/commands/components/empty-command.client.d.mts +2 -2
  146. package/dist/modules/commands/components/form-dialog-command.client.d.mts +12 -12
  147. package/dist/modules/commands/hooks/use-command-menu.client.mjs.map +1 -1
  148. package/dist/modules/commands/hooks/use-command-mutation.client.mjs +1 -1
  149. package/dist/modules/commands/menus/context-menu.client.d.mts +2 -2
  150. package/dist/modules/commands/menus/dropdown-menu.client.d.mts +3 -3
  151. package/dist/modules/commands/menus/inline-menu.client.d.mts +3 -3
  152. package/dist/modules/commands/menus/responsive-menu.client.d.mts +3 -3
  153. package/dist/modules/commands/utils/archive-command.client.d.mts +3 -3
  154. package/dist/modules/commands/utils/delete-command.client.d.mts +3 -3
  155. package/dist/modules/config/db/helpers.d.mts +5 -5
  156. package/dist/modules/config/db/helpers.d.mts.map +1 -1
  157. package/dist/modules/config/lib/config.d.mts +1 -1
  158. package/dist/modules/config/lib/config.mjs.map +1 -1
  159. package/dist/modules/data-tables/components/cell/common.client.d.mts +5 -5
  160. package/dist/modules/data-tables/components/filters/combobox.client.d.mts +2 -2
  161. package/dist/modules/data-tables/components/filters/slider.client.d.mts +2 -2
  162. package/dist/modules/data-tables/components/search-input.client.d.mts +2 -2
  163. package/dist/modules/data-tables/hooks/use-context.client.d.mts +2 -2
  164. package/dist/modules/data-tables/strategies/helpers/sorting.mjs +1 -1
  165. package/dist/modules/data-tables/tables/data-table/components/table.d.mts +2 -2
  166. package/dist/modules/data-tables/tables/inline-table/components/cells/common.d.mts +2 -2
  167. package/dist/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.d.mts +2 -2
  168. package/dist/modules/data-tables/tables/inline-table/components/cells/read-only.d.mts +2 -2
  169. package/dist/modules/data-tables/tables/inline-table/components/table.d.mts +2 -2
  170. package/dist/modules/data-tables/tables/inline-table/hooks/context.client.d.mts +2 -2
  171. package/dist/modules/inline-edit/components/combobox-dropdown.client.d.mts +2 -2
  172. package/dist/modules/inline-edit/components/combobox-dropdown.client.d.mts.map +1 -1
  173. package/dist/modules/inline-edit/components/combobox.client.d.mts +2 -2
  174. package/dist/modules/inline-edit/components/combobox.client.d.mts.map +1 -1
  175. package/dist/modules/inline-edit/components/date-input.client.d.mts +2 -2
  176. package/dist/modules/inline-edit/components/date-input.client.d.mts.map +1 -1
  177. package/dist/modules/inline-edit/components/date-picker.client.d.mts +2 -2
  178. package/dist/modules/inline-edit/components/date-picker.client.d.mts.map +1 -1
  179. package/dist/modules/inline-edit/components/editor.client.d.mts +2 -2
  180. package/dist/modules/inline-edit/components/input-recipient.client.d.mts +2 -2
  181. package/dist/modules/inline-edit/components/input-toggle.client.d.mts +2 -2
  182. package/dist/modules/inline-edit/components/input.client.d.mts +4 -4
  183. package/dist/modules/inline-edit/components/select.client.d.mts +6 -6
  184. package/dist/modules/inline-edit/components/switch.client.d.mts +2 -2
  185. package/dist/modules/inline-edit/components/toggle.client.d.mts +2 -2
  186. package/dist/modules/inline-edit/hooks/context.client.d.mts +2 -2
  187. package/dist/modules/inline-edit/hooks/context.client.d.mts.map +1 -1
  188. package/dist/modules/inline-edit/hooks/use-inline.client.mjs +2 -6
  189. package/dist/modules/inline-edit/hooks/use-inline.client.mjs.map +1 -1
  190. package/dist/modules/storage/components/dropzone.client.d.mts +4 -4
  191. package/dist/modules/storage/components/image-grid.client.d.mts +3 -3
  192. package/dist/modules/storage/components/image-grid.client.mjs +1 -1
  193. package/dist/modules/storage/components/upload-zone.client.d.mts +2 -2
  194. package/dist/modules/storage/components/upload-zone.client.mjs +1 -2
  195. package/dist/modules/storage/components/upload-zone.client.mjs.map +1 -1
  196. package/dist/modules/storage/lib/create-upload.client.d.mts.map +1 -1
  197. package/dist/modules/storage/lib/proxy.server.mjs +1 -1
  198. package/dist/modules/storage/lib/router.server.d.mts +2354 -2324
  199. package/dist/modules/storage/lib/router.server.d.mts.map +1 -1
  200. package/dist/modules/storage/lib/router.server.mjs +2 -3
  201. package/dist/modules/storage/lib/router.server.mjs.map +1 -1
  202. package/dist/modules/storage/lib/service.server.d.mts +18 -18
  203. package/dist/modules/storage/lib/validators.d.mts +90 -90
  204. package/dist/modules/storage/lib/validators.d.mts.map +1 -1
  205. package/package.json +1 -1
  206. package/src/components/layouts/admin-layout.tsx +1 -3
  207. package/src/components/navigation/admin-sidebar-header.client.tsx +3 -20
  208. package/src/modules/auth/components/allowed.client.tsx +2 -2
  209. package/src/modules/auth/components/create-first-user-page.client.tsx +3 -2
  210. package/src/modules/auth/components/forget-password-page.client.tsx +2 -1
  211. package/src/modules/auth/components/guard.server.tsx +2 -0
  212. package/src/modules/auth/components/login-page.client.tsx +2 -1
  213. package/src/modules/auth/components/reset-password-page.client.tsx +3 -1
  214. package/src/modules/auth/entry.client.ts +13 -1
  215. package/src/modules/auth/entry.ts +11 -0
  216. package/src/modules/auth/handler/create-client.client.ts +53 -0
  217. package/src/modules/auth/hooks/use-auth-client.tsx +38 -0
  218. package/src/modules/auth/hooks/use-permission.ts +49 -94
  219. package/src/modules/auth/hooks/use-session.ts +16 -16
  220. package/src/modules/commands/hooks/use-command-menu.client.tsx +0 -6
  221. package/src/modules/config/lib/config.ts +3 -2
  222. package/src/modules/inline-edit/hooks/use-inline.client.tsx +1 -1
  223. package/src/modules/storage/components/upload-zone.client.tsx +0 -2
  224. package/src/modules/storage/lib/router.server.ts +5 -4
  225. package/dist/modules/auth/handler/client.client.d.mts.map +0 -1
  226. package/dist/modules/auth/handler/client.client.mjs +0 -21
  227. package/dist/modules/auth/handler/client.client.mjs.map +0 -1
  228. package/src/modules/auth/components/guard.client.tsx +0 -12
  229. package/src/modules/auth/handler/client.client.ts +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.mts","names":[],"sources":["../../../../src/modules/auth/handler/init.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;cAca,gBAAA;KAER,8BAA8B;MAC7B,eAAe;SACZ;UACC;MACJ,kBAAkB;6BAEF;;AART,iBAYG,QAZa,CAAA,gBAYY,eAZZ,CAAA,CAAA,KAAA,EAYoC,aAZpC,CAYkD,OAZlD,CAAA,CAAA,iBAY0D,IAZ1D,CAAA;EAExB,QAAA,EAAA;IAA8B,YAAA,EAAA,MAAA;IACd,QAAA,EAAA;MAAf,UAAA,EAAA,GAAA,GAAA,KAAA;IACG,CAAA;EACC,CAAA;EACc,QAAA,EAAA,CAAA,OAAA,EAMsD,cAAA,CAAA,iBANtD,EAAA,2BAAA,kCAAA;EAAlB,gBAAA,EAAA;IAEgB,OAAA,EAAA,IAAA;EAAI,CAAA;EAIV,IAAA,EAAA;IAAyB,WAAA,EAAA;MAAsC,OAAA,EAAA,IAAA;IAAd,CAAA;IAAa,gBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAS,EAAA,EAAA,MAAA;cAAA,SAAA,MAAA;cAoFjE,SAAqB,MAAlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAb,UAAA,GAAa,kBAAkB"}
1
+ {"version":3,"file":"init.d.mts","names":[],"sources":["../../../../src/modules/auth/handler/init.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;cAca,gBAAA;KAER,8BAA8B;MAC7B,eAAe;SACZ;UACC;MACJ,kBAAkB;6BAEF;;AART,iBAYG,QAZa,CAAA,gBAYY,eAZZ,CAAA,CAAA,KAAA,EAYoC,aAZpC,CAYkD,OAZlD,CAAA,CAAA,eAY0D,IAZ1D,CAAA;EAExB,QAAA,EAAA;IAA8B,YAAA,EAAA,MAAA;IACd,QAAA,EAAA;MAAf,UAAA,EAAA,GAAA,GAAA,KAAA;IACG,CAAA;EACC,CAAA;EACc,QAAA,EAAA,CAAA,OAAA,EAMsD,YAAA,CAAA,iBANtD,EAAA,yBAAA,gCAAA;EAAlB,gBAAA,EAAA;IAEgB,OAAA,EAAA,IAAA;EAAI,CAAA;EAIV,IAAA,EAAA;IAAyB,WAAA,EAAA;MAAsC,OAAA,EAAA,IAAA;IAAd,CAAA;IAAa,gBAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAS,EAAA,EAAA,MAAA;cAAA,SAAA,MAAA;cAoFjE,SAAqB,MAAlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAb,UAAA,GAAa,kBAAkB"}
@@ -0,0 +1,24 @@
1
+ import { ClientAuth } from "../handler/create-client.client.mjs";
2
+ import * as react_jsx_runtime66 from "react/jsx-runtime";
3
+ import * as react7 from "react";
4
+ import { PropsWithChildren } from "react";
5
+ import { AccessControl, Role } from "better-auth/plugins";
6
+
7
+ //#region src/modules/auth/hooks/use-auth-client.d.ts
8
+ /**
9
+ * Auth client context
10
+ */
11
+ declare const AuthClientContext: react7.Context<ClientAuth<never, never>>;
12
+ /**
13
+ * Use auth client
14
+ */
15
+ declare function useAuthClient<TAccessControl extends AccessControl = never, TRoles extends { [key in string]: Role } = never>(): ClientAuth<TAccessControl, TRoles>;
16
+ /**
17
+ * Auth client provider
18
+ */
19
+ declare function AuthProvider<TAccessControl extends AccessControl, TRoles extends { [key in string]: Role }>(props: PropsWithChildren<{
20
+ authClient: ClientAuth<TAccessControl, TRoles>;
21
+ }>): react_jsx_runtime66.JSX.Element;
22
+ //#endregion
23
+ export { AuthClientContext, AuthProvider, useAuthClient };
24
+ //# sourceMappingURL=use-auth-client.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-auth-client.d.mts","names":[],"sources":["../../../../src/modules/auth/hooks/use-auth-client.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;cAUa,mBAAiB,MAAA,CAAA,QAAA;AAA9B;AAKA;;AAEoC,iBAFpB,aAEoB,CAAA,uBADX,aACW,GAAA,KAAA,EAAA,eAAA,UAKL,MAAA,GALK,IAKL,EAAgB,GAAA,KAAA,CAAA,CAAA,CAAA,EAA3B,UAA2B,CAAhB,cAAgB,EAAA,MAAA,CAAA;;;AAM/C;AACyB,iBADT,YACS,CAAA,uBAAA,aAAA,EAAA,eAAA,UACW,MAAA,GAAA,IAAA,EACgB,CAAA,CAAA,KAAA,EAA3C,iBAA2C,CAAA;EAAgB,UAAA,EAA3B,UAA2B,CAAhB,cAAgB,EAAA,MAAA,CAAA;CAA3B,CAAA,CAAA,EAAqC,mBAAA,CAAA,GAAA,CAAA,OAArC"}
@@ -0,0 +1,31 @@
1
+ "use client";
2
+
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { createContext, use } from "react";
5
+
6
+ //#region src/modules/auth/hooks/use-auth-client.tsx
7
+ /**
8
+ * Auth client context
9
+ */
10
+ const AuthClientContext = createContext(null);
11
+ /**
12
+ * Use auth client
13
+ */
14
+ function useAuthClient() {
15
+ const context = use(AuthClientContext);
16
+ if (!context) throw new Error("Auth client is not provided");
17
+ return context;
18
+ }
19
+ /**
20
+ * Auth client provider
21
+ */
22
+ function AuthProvider(props) {
23
+ return /* @__PURE__ */ jsx(AuthClientContext, {
24
+ value: props.authClient,
25
+ children: props.children
26
+ });
27
+ }
28
+
29
+ //#endregion
30
+ export { AuthClientContext, AuthProvider, useAuthClient };
31
+ //# sourceMappingURL=use-auth-client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-auth-client.mjs","names":[],"sources":["../../../../src/modules/auth/hooks/use-auth-client.tsx"],"sourcesContent":["\"use client\";\n\nimport { AccessControl, Role } from \"better-auth/plugins\";\nimport { createContext, PropsWithChildren, use } from \"react\";\nimport { ClientAuth } from \"../handler/create-client.client\";\n\n/**\n * Auth client context\n */\n\nexport const AuthClientContext = createContext(null as unknown as ClientAuth<never, never>);\n\n/**\n * Use auth client\n */\nexport function useAuthClient<\n TAccessControl extends AccessControl = never,\n TRoles extends { [key in string]: Role } = never,\n>() {\n const context = use(AuthClientContext);\n if (!context) throw new Error(\"Auth client is not provided\");\n\n return context as ClientAuth<TAccessControl, TRoles>;\n}\n\n/**\n * Auth client provider\n */\nexport function AuthProvider<\n TAccessControl extends AccessControl,\n TRoles extends { [key in string]: Role },\n>(props: PropsWithChildren<{ authClient: ClientAuth<TAccessControl, TRoles> }>) {\n return (\n <AuthClientContext value={props.authClient as ClientAuth<never, never>}>\n {props.children}\n </AuthClientContext>\n );\n}\n"],"mappings":";;;;;;;;;AAUA,MAAa,oBAAoB,cAAc,KAA4C;;;;AAK3F,SAAgB,gBAGZ;CACF,MAAM,UAAU,IAAI,kBAAkB;AACtC,KAAI,CAAC,QAAS,OAAM,IAAI,MAAM,8BAA8B;AAE5D,QAAO;;;;;AAMT,SAAgB,aAGd,OAA8E;AAC9E,QACE,oBAAC;EAAkB,OAAO,MAAM;YAC7B,MAAM;GACW"}
@@ -1,10 +1,6 @@
1
1
  import { Permission } from "../lib/permissions.mjs";
2
- import * as _tanstack_react_query5 from "@tanstack/react-query";
3
2
 
4
3
  //#region src/modules/auth/hooks/use-permission.d.ts
5
- /**
6
- * UsePermission
7
- */
8
4
  type UsePermissionProps = {
9
5
  /**
10
6
  * Strategy to use when checking multiple permissions
@@ -32,39 +28,16 @@ type UsePermissionProps = {
32
28
  */
33
29
  permission?: Permission[];
34
30
  };
35
- declare function usePermission({
36
- permission,
37
- strategy
38
- }: UsePermissionProps): _tanstack_react_query5.UseSuspenseQueryResult<{
39
- permission: undefined;
40
- success: boolean;
41
- } | {
42
- permission: Permission | Permission[];
43
- success: boolean;
44
- }, Error>;
45
31
  /**
46
- * Check multiple permissions in parallel
47
- * @param permission
48
- * @param strategy
49
- * @returns
50
- * @deprecated Use `usePermission` with strategy "any" or "all" instead
32
+ * UsePermission
51
33
  */
52
- declare function usePermissions(permission?: Permission): {
53
- data: null;
54
- errors: _tanstack_react_query5.UseSuspenseQueryResult<{
55
- permission: Permission;
56
- success: boolean;
57
- }, Error>[];
58
- } | {
59
- data: {
60
- success: boolean;
61
- values: {
62
- permission: Permission;
63
- success: boolean;
64
- }[];
65
- };
66
- errors: null;
34
+ declare function usePermission({
35
+ strategy,
36
+ permission
37
+ }: UsePermissionProps): {
38
+ permission: Permission | Permission[] | undefined;
39
+ success: boolean;
67
40
  };
68
41
  //#endregion
69
- export { UsePermissionProps, usePermission, usePermissions };
42
+ export { UsePermissionProps, usePermission };
70
43
  //# sourceMappingURL=use-permission.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-permission.d.mts","names":[],"sources":["../../../../src/modules/auth/hooks/use-permission.ts"],"sourcesContent":[],"mappings":";;;;;;;AAUY,KAAA,kBAAA,GAAkB;EAgCd;;;;;;;;;AAsDhB;;eAxEmB;;;;;;;;;;;;;eAeA;;iBAGH,aAAA;;;GAAgD,4CAAkB;;;;;;;;;;;;;;iBAsDlE,cAAA,cAA4B"}
1
+ {"version":3,"file":"use-permission.d.mts","names":[],"sources":["../../../../src/modules/auth/hooks/use-permission.ts"],"sourcesContent":[],"mappings":";;;KAMY,kBAAA;;AAAZ;AAmCA;;;;;;;;;eArBmB;;;;;;;;;;;;;eAeA;;;;;iBAMH,aAAA;;;GAAgD"}
@@ -1,104 +1,58 @@
1
1
  "use client";
2
2
 
3
- import { authClient } from "../handler/client.client.mjs";
3
+ import { useAuthClient } from "./use-auth-client.mjs";
4
4
  import { useSession } from "./use-session.mjs";
5
- import { useSuspenseQueries, useSuspenseQuery } from "@tanstack/react-query";
6
5
 
7
6
  //#region src/modules/auth/hooks/use-permission.ts
8
- function usePermission({ permission, strategy = "all" }) {
9
- const sessionQuery = useSession();
10
- return useSuspenseQuery({
11
- queryKey: ["permission", {
12
- permission,
13
- strategy
14
- }],
15
- queryFn: async () => {
16
- if (!permission) return {
17
- permission,
18
- success: true
19
- };
20
- if (!sessionQuery.data) return {
21
- permission,
22
- success: false
23
- };
24
- const userId = sessionQuery.data?.user.id;
25
- if (!userId) return {
26
- permission,
27
- success: false
28
- };
29
- const permissions = Array.isArray(permission) ? permission : [permission];
30
- const results = await Promise.all(permissions.map((permission$1) => authClient.admin.hasPermission({
31
- permission: permission$1,
32
- userId
33
- })));
34
- const data = results.map(({ data: data$1 }) => data$1).filter((data$1) => !!data$1);
35
- const errors = results.filter(({ error }) => !!error).map(({ error }) => error);
36
- if (errors.length > 0) {
37
- console.error(...errors);
38
- return {
39
- permission,
40
- success: false
41
- };
42
- }
43
- return {
44
- permission,
45
- success: strategy === "all" ? data.every(({ success }) => success) : data.some(({ success }) => success)
46
- };
47
- },
48
- staleTime: 300 * 1e3
49
- });
50
- }
51
7
  /**
52
- * Check multiple permissions in parallel
53
- * @param permission
54
- * @param strategy
55
- * @returns
56
- * @deprecated Use `usePermission` with strategy "any" or "all" instead
8
+ * UsePermission
57
9
  */
58
- function usePermissions(permission) {
59
- const sessionQuery = useSession();
60
- return useSuspenseQueries({
61
- queries: Object.entries(permission ?? {}).flatMap(([resource, permissions]) => permissions.map((permission$1) => ({ [resource]: [permission$1] }))).map((permission$1) => ({
62
- queryKey: ["permission", permission$1],
63
- queryFn: async () => {
64
- const userId = sessionQuery.data?.user.id;
65
- if (!userId) return {
66
- permission: permission$1,
67
- success: false
68
- };
69
- const { data, error } = await authClient.admin.hasPermission({
70
- permission: permission$1,
71
- userId
72
- });
73
- if (error) {
74
- console.error(error);
75
- throw error;
76
- }
77
- return {
78
- permission: permission$1,
79
- success: data.success
80
- };
81
- },
82
- staleTime: 300 * 1e3
83
- })),
84
- combine: (results) => {
85
- const errors = results.filter(({ error }) => error);
86
- if (errors.length) return {
87
- data: null,
88
- errors
89
- };
90
- const values = results.map(({ data }) => data);
91
- return {
92
- data: {
93
- success: results.every(({ data }) => data?.success),
94
- values
95
- },
96
- errors: null
97
- };
98
- }
99
- });
10
+ function usePermission({ strategy = "all", permission }) {
11
+ const authClient = useAuthClient();
12
+ /**
13
+ * If no role is found in the session, deny by default
14
+ */
15
+ const role = useSession(authClient).data?.user.role;
16
+ if (!role) return {
17
+ permission,
18
+ success: false
19
+ };
20
+ /**
21
+ * If no permission is provided, allow by default
22
+ */
23
+ if (!permission) return {
24
+ permission,
25
+ success: true
26
+ };
27
+ /**
28
+ * If the strategy is "any", check if the user has any of the permissions
29
+ */
30
+ if (strategy === "any" && Array.isArray(permission)) return {
31
+ permission,
32
+ success: (Array.isArray(permission) ? permission : [permission]).some((permission$1) => authClient.admin.checkRolePermission({
33
+ role,
34
+ permissions: permission$1
35
+ }))
36
+ };
37
+ /**
38
+ * If the strategy is "all", check if the user has all of the permissions
39
+ */
40
+ if (strategy === "all" && !Array.isArray(permission)) return {
41
+ permission,
42
+ success: authClient.admin.checkRolePermission({
43
+ role,
44
+ permissions: permission
45
+ })
46
+ };
47
+ /**
48
+ * If the strategy is not recognized, deny by default
49
+ */
50
+ return {
51
+ permission,
52
+ success: false
53
+ };
100
54
  }
101
55
 
102
56
  //#endregion
103
- export { usePermission, usePermissions };
57
+ export { usePermission };
104
58
  //# sourceMappingURL=use-permission.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-permission.mjs","names":["data","permission"],"sources":["../../../../src/modules/auth/hooks/use-permission.ts"],"sourcesContent":["\"use client\";\n\nimport { useSuspenseQueries, useSuspenseQuery } from \"@tanstack/react-query\";\nimport { authClient } from \"../handler/client.client\";\nimport { type Permission } from \"../lib/permissions\";\nimport { useSession } from \"./use-session\";\n\n/**\n * UsePermission\n */\nexport type UsePermissionProps =\n | {\n /**\n * Strategy to use when checking multiple permissions\n * - \"all\": all permissions must be allowed\n * - \"any\": at least one permission must be allowed\n * @default \"all\"\n */\n strategy?: \"all\";\n\n /**\n * Permission to check\n * @example { project: [\"view\", \"create\"] }\n */\n permission?: Permission;\n }\n | {\n /**\n * Strategy to use when checking multiple permissions\n * - \"all\": all permissions must be allowed\n * - \"any\": at least one permission must be allowed\n * @default \"all\"\n */\n strategy?: \"any\";\n\n /**\n * Permission to check\n * @example [{ project: [\"view\", \"create\"] }, { client: [\"view\"] }, { drive: [\"view\"] }]\n */\n permission?: Permission[];\n };\n\nexport function usePermission({ permission, strategy = \"all\" }: UsePermissionProps) {\n const sessionQuery = useSession();\n\n return useSuspenseQuery({\n queryKey: [\"permission\", { permission, strategy }],\n queryFn: async () => {\n // If no permission is provided, allow by default\n if (!permission) return { permission, success: true };\n\n // If no user is logged in, deny by default\n if (!sessionQuery.data) return { permission, success: false };\n const userId = sessionQuery.data?.user.id;\n if (!userId) return { permission, success: false };\n\n // If the strategy is \"any\", check if the user has any of the permissions\n const permissions = Array.isArray(permission) ? permission : [permission];\n\n // Check if the user has the permission\n const results = await Promise.all(\n permissions.map((permission) => authClient.admin.hasPermission({ permission, userId })),\n );\n\n const data = results.map(({ data }) => data).filter((data) => !!data);\n const errors = results.filter(({ error }) => !!error).map(({ error }) => error);\n\n // If there is an error, log it and return false\n if (errors.length > 0) {\n console.error(...errors);\n return { permission, success: false };\n }\n\n // Determine if the user has the permission based on the strategy\n const success =\n strategy === \"all\"\n ? data.every(({ success }) => success)\n : data.some(({ success }) => success);\n\n // Return the result\n return {\n permission,\n success,\n };\n },\n staleTime: 5 * 60 * 1000, // 5 minutes\n });\n}\n\n/**\n * Check multiple permissions in parallel\n * @param permission\n * @param strategy\n * @returns\n * @deprecated Use `usePermission` with strategy \"any\" or \"all\" instead\n */\nexport function usePermissions(permission?: Permission) {\n const sessionQuery = useSession();\n\n const keys = Object.entries(permission ?? {}).flatMap(([resource, permissions]) =>\n permissions.map((permission) => ({ [resource]: [permission] }) as Permission),\n );\n\n return useSuspenseQueries({\n queries: keys.map((permission) => ({\n queryKey: [\"permission\", permission],\n queryFn: async () => {\n const userId = sessionQuery.data?.user.id;\n if (!userId) return { permission, success: false };\n\n const { data, error } = await authClient.admin.hasPermission({ permission, userId });\n if (error) {\n console.error(error);\n throw error;\n }\n\n return {\n permission,\n success: data.success,\n };\n },\n staleTime: 5 * 60 * 1000, // 5 minutes\n })),\n combine: (results) => {\n const errors = results.filter(({ error }) => error);\n if (errors.length) return { data: null, errors };\n\n const values = results.map(({ data }) => data);\n const success = results.every(({ data }) => data?.success);\n\n return { data: { success, values }, errors: null };\n },\n });\n}\n"],"mappings":";;;;;;;AA0CA,SAAgB,cAAc,EAAE,YAAY,WAAW,SAA6B;CAClF,MAAM,eAAe,YAAY;AAEjC,QAAO,iBAAiB;EACtB,UAAU,CAAC,cAAc;GAAE;GAAY;GAAU,CAAC;EAClD,SAAS,YAAY;AAEnB,OAAI,CAAC,WAAY,QAAO;IAAE;IAAY,SAAS;IAAM;AAGrD,OAAI,CAAC,aAAa,KAAM,QAAO;IAAE;IAAY,SAAS;IAAO;GAC7D,MAAM,SAAS,aAAa,MAAM,KAAK;AACvC,OAAI,CAAC,OAAQ,QAAO;IAAE;IAAY,SAAS;IAAO;GAGlD,MAAM,cAAc,MAAM,QAAQ,WAAW,GAAG,aAAa,CAAC,WAAW;GAGzE,MAAM,UAAU,MAAM,QAAQ,IAC5B,YAAY,KAAK,iBAAe,WAAW,MAAM,cAAc;IAAE;IAAY;IAAQ,CAAC,CAAC,CACxF;GAED,MAAM,OAAO,QAAQ,KAAK,EAAE,mBAAWA,OAAK,CAAC,QAAQ,WAAS,CAAC,CAACA,OAAK;GACrE,MAAM,SAAS,QAAQ,QAAQ,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,MAAM;AAG/E,OAAI,OAAO,SAAS,GAAG;AACrB,YAAQ,MAAM,GAAG,OAAO;AACxB,WAAO;KAAE;KAAY,SAAS;KAAO;;AAUvC,UAAO;IACL;IACA,SAPA,aAAa,QACT,KAAK,OAAO,EAAE,cAAc,QAAQ,GACpC,KAAK,MAAM,EAAE,cAAc,QAAQ;IAMxC;;EAEH,WAAW,MAAS;EACrB,CAAC;;;;;;;;;AAUJ,SAAgB,eAAe,YAAyB;CACtD,MAAM,eAAe,YAAY;AAMjC,QAAO,mBAAmB;EACxB,SALW,OAAO,QAAQ,cAAc,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,iBAChE,YAAY,KAAK,kBAAgB,GAAG,WAAW,CAACC,aAAW,EAAE,EAAgB,CAC9E,CAGe,KAAK,kBAAgB;GACjC,UAAU,CAAC,cAAcA,aAAW;GACpC,SAAS,YAAY;IACnB,MAAM,SAAS,aAAa,MAAM,KAAK;AACvC,QAAI,CAAC,OAAQ,QAAO;KAAE;KAAY,SAAS;KAAO;IAElD,MAAM,EAAE,MAAM,UAAU,MAAM,WAAW,MAAM,cAAc;KAAE;KAAY;KAAQ,CAAC;AACpF,QAAI,OAAO;AACT,aAAQ,MAAM,MAAM;AACpB,WAAM;;AAGR,WAAO;KACL;KACA,SAAS,KAAK;KACf;;GAEH,WAAW,MAAS;GACrB,EAAE;EACH,UAAU,YAAY;GACpB,MAAM,SAAS,QAAQ,QAAQ,EAAE,YAAY,MAAM;AACnD,OAAI,OAAO,OAAQ,QAAO;IAAE,MAAM;IAAM;IAAQ;GAEhD,MAAM,SAAS,QAAQ,KAAK,EAAE,WAAW,KAAK;AAG9C,UAAO;IAAE,MAAM;KAAE,SAFD,QAAQ,OAAO,EAAE,WAAW,MAAM,QAAQ;KAEhC;KAAQ;IAAE,QAAQ;IAAM;;EAErD,CAAC"}
1
+ {"version":3,"file":"use-permission.mjs","names":["permission"],"sources":["../../../../src/modules/auth/hooks/use-permission.ts"],"sourcesContent":["\"use client\";\n\nimport { type Permission } from \"../lib/permissions\";\nimport { useAuthClient } from \"./use-auth-client\";\nimport { useSession } from \"./use-session\";\n\nexport type UsePermissionProps =\n | {\n /**\n * Strategy to use when checking multiple permissions\n * - \"all\": all permissions must be allowed\n * - \"any\": at least one permission must be allowed\n * @default \"all\"\n */\n strategy?: \"all\";\n\n /**\n * Permission to check\n * @example { project: [\"view\", \"create\"] }\n */\n permission?: Permission;\n }\n | {\n /**\n * Strategy to use when checking multiple permissions\n * - \"all\": all permissions must be allowed\n * - \"any\": at least one permission must be allowed\n * @default \"all\"\n */\n strategy?: \"any\";\n\n /**\n * Permission to check\n * @example [{ project: [\"view\", \"create\"] }, { client: [\"view\"] }, { drive: [\"view\"] }]\n */\n permission?: Permission[];\n };\n\n/**\n * UsePermission\n */\nexport function usePermission({ strategy = \"all\", permission }: UsePermissionProps) {\n const authClient = useAuthClient();\n const sessionQuery = useSession(authClient);\n\n /**\n * If no role is found in the session, deny by default\n */\n const role = sessionQuery.data?.user.role;\n if (!role) return { permission, success: false };\n\n /**\n * If no permission is provided, allow by default\n */\n if (!permission) return { permission, success: true };\n\n /**\n * If the strategy is \"any\", check if the user has any of the permissions\n */\n if (strategy === \"any\" && Array.isArray(permission)) {\n const permissions = Array.isArray(permission) ? permission : [permission];\n\n const success = permissions.some((permission) =>\n authClient.admin.checkRolePermission({\n role,\n permissions: permission,\n }),\n );\n\n return { permission, success };\n }\n\n /**\n * If the strategy is \"all\", check if the user has all of the permissions\n */\n if (strategy === \"all\" && !Array.isArray(permission)) {\n const success = authClient.admin.checkRolePermission({\n role,\n permissions: permission,\n });\n\n return { permission, success };\n }\n\n /**\n * If the strategy is not recognized, deny by default\n */\n return { permission, success: false };\n}\n"],"mappings":";;;;;;;;;AAyCA,SAAgB,cAAc,EAAE,WAAW,OAAO,cAAkC;CAClF,MAAM,aAAa,eAAe;;;;CAMlC,MAAM,OALe,WAAW,WAAW,CAKjB,MAAM,KAAK;AACrC,KAAI,CAAC,KAAM,QAAO;EAAE;EAAY,SAAS;EAAO;;;;AAKhD,KAAI,CAAC,WAAY,QAAO;EAAE;EAAY,SAAS;EAAM;;;;AAKrD,KAAI,aAAa,SAAS,MAAM,QAAQ,WAAW,CAUjD,QAAO;EAAE;EAAY,UATD,MAAM,QAAQ,WAAW,GAAG,aAAa,CAAC,WAAW,EAE7C,MAAM,iBAChC,WAAW,MAAM,oBAAoB;GACnC;GACA,aAAaA;GACd,CAAC,CACH;EAE6B;;;;AAMhC,KAAI,aAAa,SAAS,CAAC,MAAM,QAAQ,WAAW,CAMlD,QAAO;EAAE;EAAY,SALL,WAAW,MAAM,oBAAoB;GACnD;GACA,aAAa;GACd,CAAC;EAE4B;;;;AAMhC,QAAO;EAAE;EAAY,SAAS;EAAO"}
@@ -1,123 +1,9 @@
1
- import * as _tanstack_react_query1 from "@tanstack/react-query";
1
+ import { ClientAuth } from "../handler/create-client.client.mjs";
2
+ import "../../../auth/client.mjs";
3
+ import * as _tanstack_react_query0 from "@tanstack/react-query";
2
4
 
3
5
  //#region src/modules/auth/hooks/use-session.d.ts
4
- declare const sessionQueryOptions: _tanstack_react_query1.OmitKeyof<_tanstack_react_query1.UseQueryOptions<{
5
- user: {
6
- id: string;
7
- createdAt: Date;
8
- updatedAt: Date;
9
- email: string;
10
- emailVerified: boolean;
11
- name: string;
12
- image?: string | null | undefined;
13
- banned: boolean | null | undefined;
14
- role?: string | null | undefined;
15
- banReason?: string | null | undefined;
16
- banExpires?: Date | null | undefined;
17
- firstName: string;
18
- lastName: string;
19
- };
20
- session: {
21
- id: string;
22
- createdAt: Date;
23
- updatedAt: Date;
24
- userId: string;
25
- expiresAt: Date;
26
- token: string;
27
- ipAddress?: string | null | undefined;
28
- userAgent?: string | null | undefined;
29
- impersonatedBy?: string | null | undefined;
30
- };
31
- } | null, Error, {
32
- user: {
33
- id: string;
34
- createdAt: Date;
35
- updatedAt: Date;
36
- email: string;
37
- emailVerified: boolean;
38
- name: string;
39
- image?: string | null | undefined;
40
- banned: boolean | null | undefined;
41
- role?: string | null | undefined;
42
- banReason?: string | null | undefined;
43
- banExpires?: Date | null | undefined;
44
- firstName: string;
45
- lastName: string;
46
- };
47
- session: {
48
- id: string;
49
- createdAt: Date;
50
- updatedAt: Date;
51
- userId: string;
52
- expiresAt: Date;
53
- token: string;
54
- ipAddress?: string | null | undefined;
55
- userAgent?: string | null | undefined;
56
- impersonatedBy?: string | null | undefined;
57
- };
58
- } | null, string[]>, "queryFn"> & {
59
- queryFn?: _tanstack_react_query1.QueryFunction<{
60
- user: {
61
- id: string;
62
- createdAt: Date;
63
- updatedAt: Date;
64
- email: string;
65
- emailVerified: boolean;
66
- name: string;
67
- image?: string | null | undefined;
68
- banned: boolean | null | undefined;
69
- role?: string | null | undefined;
70
- banReason?: string | null | undefined;
71
- banExpires?: Date | null | undefined;
72
- firstName: string;
73
- lastName: string;
74
- };
75
- session: {
76
- id: string;
77
- createdAt: Date;
78
- updatedAt: Date;
79
- userId: string;
80
- expiresAt: Date;
81
- token: string;
82
- ipAddress?: string | null | undefined;
83
- userAgent?: string | null | undefined;
84
- impersonatedBy?: string | null | undefined;
85
- };
86
- } | null, string[], never> | undefined;
87
- } & {
88
- queryKey: string[] & {
89
- [dataTagSymbol]: {
90
- user: {
91
- id: string;
92
- createdAt: Date;
93
- updatedAt: Date;
94
- email: string;
95
- emailVerified: boolean;
96
- name: string;
97
- image?: string | null | undefined;
98
- banned: boolean | null | undefined;
99
- role?: string | null | undefined;
100
- banReason?: string | null | undefined;
101
- banExpires?: Date | null | undefined;
102
- firstName: string;
103
- lastName: string;
104
- };
105
- session: {
106
- id: string;
107
- createdAt: Date;
108
- updatedAt: Date;
109
- userId: string;
110
- expiresAt: Date;
111
- token: string;
112
- ipAddress?: string | null | undefined;
113
- userAgent?: string | null | undefined;
114
- impersonatedBy?: string | null | undefined;
115
- };
116
- } | null;
117
- [dataTagErrorSymbol]: Error;
118
- };
119
- };
120
- declare function useSession(): _tanstack_react_query1.UseSuspenseQueryResult<{
6
+ declare function useSession(authClient: ClientAuth<never, never>): _tanstack_react_query0.UseSuspenseQueryResult<{
121
7
  user: {
122
8
  id: string;
123
9
  createdAt: Date;
@@ -146,5 +32,5 @@ declare function useSession(): _tanstack_react_query1.UseSuspenseQueryResult<{
146
32
  };
147
33
  } | null, Error>;
148
34
  //#endregion
149
- export { sessionQueryOptions, useSession };
35
+ export { useSession };
150
36
  //# sourceMappingURL=use-session.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-session.d.mts","names":[],"sources":["../../../../src/modules/auth/hooks/use-session.ts"],"sourcesContent":[],"mappings":";;;cAKa,qBAAmB,sBAAA,CAAA,iCAAA;;;IAAnB,SAAA,MAAA;;;;;;;;;;;;;;;IAAmB,SAAA,MAAA;;;;;;;;;;;;;;;;;;IAehB,MAAA,EAAA,OAAU,GAAA,IAAA,GAAA,SAAA;;;;;;;;;IAAA,SAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAV,UAAA,CAAA,0BAAU"}
1
+ {"version":3,"file":"use-session.d.mts","names":[],"sources":["../../../../src/modules/auth/hooks/use-session.ts"],"sourcesContent":[],"mappings":";;;;;iBAKgB,UAAA,aAAuB,kDAAwB;;;;IAA/C,SAAU,MAAA;IAAa,KAAA,EAAA,MAAA;;;;;;;;qBAAwB;IAAA,QAAA,EAAA,MAAA"}
@@ -1,25 +1,23 @@
1
1
  "use client";
2
2
 
3
- import { authClient } from "../handler/client.client.mjs";
4
- import { queryOptions, useSuspenseQuery } from "@tanstack/react-query";
3
+ import { useSuspenseQuery } from "@tanstack/react-query";
5
4
 
6
5
  //#region src/modules/auth/hooks/use-session.ts
7
- const sessionQueryOptions = queryOptions({
8
- queryKey: ["session"],
9
- queryFn: async () => {
10
- const session = await authClient.getSession();
11
- if (session.error) {
12
- console.error(session.error);
13
- return null;
14
- }
15
- return session.data;
16
- },
17
- staleTime: 1e3 * 60 * 60
18
- });
19
- function useSession() {
20
- return useSuspenseQuery(sessionQueryOptions);
6
+ function useSession(authClient) {
7
+ return useSuspenseQuery({
8
+ queryKey: ["session"],
9
+ queryFn: async () => {
10
+ const session = await authClient.getSession();
11
+ if (session.error) {
12
+ console.error(session.error);
13
+ return null;
14
+ }
15
+ return session.data;
16
+ },
17
+ staleTime: 1e3 * 60 * 60
18
+ });
21
19
  }
22
20
 
23
21
  //#endregion
24
- export { sessionQueryOptions, useSession };
22
+ export { useSession };
25
23
  //# sourceMappingURL=use-session.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-session.mjs","names":[],"sources":["../../../../src/modules/auth/hooks/use-session.ts"],"sourcesContent":["\"use client\";\n\nimport { queryOptions, useSuspenseQuery } from \"@tanstack/react-query\";\nimport { authClient } from \"../entry.client\";\n\nexport const sessionQueryOptions = queryOptions({\n queryKey: [\"session\"],\n queryFn: async () => {\n const session = await authClient.getSession();\n\n if (session.error) {\n console.error(session.error);\n return null;\n }\n\n return session.data;\n },\n staleTime: 1000 * 60 * 60,\n});\n\nexport function useSession() {\n const session = useSuspenseQuery(sessionQueryOptions);\n return session;\n}\n"],"mappings":";;;;;;AAKA,MAAa,sBAAsB,aAAa;CAC9C,UAAU,CAAC,UAAU;CACrB,SAAS,YAAY;EACnB,MAAM,UAAU,MAAM,WAAW,YAAY;AAE7C,MAAI,QAAQ,OAAO;AACjB,WAAQ,MAAM,QAAQ,MAAM;AAC5B,UAAO;;AAGT,SAAO,QAAQ;;CAEjB,WAAW,MAAO,KAAK;CACxB,CAAC;AAEF,SAAgB,aAAa;AAE3B,QADgB,iBAAiB,oBAAoB"}
1
+ {"version":3,"file":"use-session.mjs","names":[],"sources":["../../../../src/modules/auth/hooks/use-session.ts"],"sourcesContent":["\"use client\";\n\nimport { useSuspenseQuery } from \"@tanstack/react-query\";\nimport { ClientAuth } from \"../entry.client\";\n\nexport function useSession(authClient: ClientAuth<never, never>) {\n const session = useSuspenseQuery({\n queryKey: [\"session\"],\n queryFn: async () => {\n const session = await authClient.getSession();\n \n\n if (session.error) {\n console.error(session.error);\n return null;\n }\n\n return session.data;\n },\n staleTime: 1000 * 60 * 60,\n });\n\n return session;\n}\n"],"mappings":";;;;;AAKA,SAAgB,WAAW,YAAsC;AAiB/D,QAhBgB,iBAAiB;EAC/B,UAAU,CAAC,UAAU;EACrB,SAAS,YAAY;GACnB,MAAM,UAAU,MAAM,WAAW,YAAY;AAG7C,OAAI,QAAQ,OAAO;AACjB,YAAQ,MAAM,QAAQ,MAAM;AAC5B,WAAO;;AAGT,UAAO,QAAQ;;EAEjB,WAAW,MAAO,KAAK;EACxB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { ServerError } from "../../router/lib/error.server.mjs";
2
2
  import { users } from "../db/schema.mjs";
3
- import { eq } from "drizzle-orm";
4
3
  import "server-cli-only";
4
+ import { eq } from "drizzle-orm";
5
5
  import { headers } from "next/headers";
6
6
 
7
7
  //#region src/modules/auth/lib/helpers.server.ts
@@ -31,8 +31,8 @@ declare const forgotPasswordSchema: z$1.ZodObject<{
31
31
  * Create user schema
32
32
  */
33
33
  declare const createUserSchema: z$1.ZodObject<{
34
- image: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
35
34
  email: z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<string, string>>;
35
+ image: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
36
36
  firstName: z$1.ZodString;
37
37
  lastName: z$1.ZodString;
38
38
  password: z$1.ZodString;
@@ -43,10 +43,10 @@ type CreateUserSchema = z$1.infer<typeof createUserSchema>;
43
43
  * Update user schema
44
44
  */
45
45
  declare const updateUserSchema: z$1.ZodObject<{
46
- image: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
47
46
  firstName: z$1.ZodString;
48
47
  lastName: z$1.ZodString;
49
48
  email: z$1.ZodString;
49
+ image: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
50
50
  }, {
51
51
  out: {};
52
52
  in: {};
@@ -1 +1 @@
1
- {"version":3,"file":"validators.d.mts","names":[],"sources":["../../../../src/modules/auth/lib/validators.ts"],"sourcesContent":[],"mappings":";;;;;;;AAQA;AAKa,KALD,IAAA,GAcV,OAdwB,KAAA,CAAM,YAc9B;;;;AATsB,cAAX,WAAW,EAAA,GAAA,CAAA,SAAA,CAAA;EAAA,KAAA,cAAA;EAcX,QAAA,eAAA;;;;;AAAmB,cAAnB,mBAAmB,EAAA,GAAA,CAAA,SAAA,CAAA;EAmBnB,QAAA,eAAA;;;;;AAUb;cAVa,sBAAoB,GAAA,CAAA;;;;;;cAUpB,kBAAgB,GAAA,CAAA;;;;;;EAAA,IAAA,iBAAA,cAAA,CAAA;CAAA,iBAAA,CAAA;AAajB,KAAA,gBAAA,GAAmB,GAAA,CAAE,KAAa,CAAA,OAAA,gBAAb,CAAA;AAKjC;;;cAAa,kBAAgB,GAAA,CAAA;;;;EAAA,KAAA,eAAA;CAAA,EAAA;EAOjB,GAAA,EAAA,CAAA,CAAA;EAKC,EAAA,EAAA,CAAA,CAAA;;KALD,gBAAA,GAAmB,GAAA,CAAE,aAAa;;;AAS9C;cAJa,sBAAoB,GAAA,CAAA;;;KAIrB,oBAAA,GAAuB,GAAA,CAAE,aAAa"}
1
+ {"version":3,"file":"validators.d.mts","names":[],"sources":["../../../../src/modules/auth/lib/validators.ts"],"sourcesContent":[],"mappings":";;;;;;;AAQA;AAKa,KALD,IAAA,GAcV,OAdwB,KAAA,CAAM,YAc9B;;;;AATsB,cAAX,WAAW,EAAA,GAAA,CAAA,SAAA,CAAA;EAAA,KAAA,cAAA;EAcX,QAAA,eAAA;;;;;AAAmB,cAAnB,mBAAmB,EAAA,GAAA,CAAA,SAAA,CAAA;EAmBnB,QAAA,eAAA;;;;;AAUb;cAVa,sBAAoB,GAAA,CAAA;;;;;;cAUpB,kBAAgB,GAAA,CAAA;;;;;;EAAA,IAAA,iBAAA,cAAA,CAAA;CAAA,iBAAA,CAAA;AAajB,KAAA,gBAAA,GAAmB,GAAA,CAAE,KAAa,CAAA,OAAA,gBAAb,CAAK;AAKtC;;;cAAa,kBAAgB,GAAA,CAAA;;;;EAAA,KAAA,iBAAA,gBAAA,cAAA,CAAA,CAAA;CAAA,EAAA;EAOjB,GAAA,EAAA,CAAA,CAAA;EAKC,EAAA,EAAA,CAAA,CAAA;;KALD,gBAAA,GAAmB,GAAA,CAAE,aAAa;;;AAS9C;cAJa,sBAAoB,GAAA,CAAA;;;KAIrB,oBAAA,GAAuB,GAAA,CAAE,aAAa"}
@@ -1,8 +1,8 @@
1
- import * as react_jsx_runtime39 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime11 from "react/jsx-runtime";
2
2
  import React from "react";
3
3
  import { DefaultError, MutationOptions } from "@tanstack/react-query";
4
- import { Keys } from "react-hotkeys-hook";
5
4
  import { AlertDialogCancelProps, AlertDialogContentProps, AlertDialogProps } from "@radix-ui/react-alert-dialog";
5
+ import { Keys } from "react-hotkeys-hook";
6
6
 
7
7
  //#region src/modules/commands/components/alert-dialog-command.client.d.ts
8
8
  /**
@@ -11,7 +11,7 @@ import { AlertDialogCancelProps, AlertDialogContentProps, AlertDialogProps } fro
11
11
  declare function CommandAlertDialog({
12
12
  children,
13
13
  ...props
14
- }: AlertDialogProps): react_jsx_runtime39.JSX.Element;
14
+ }: AlertDialogProps): react_jsx_runtime11.JSX.Element;
15
15
  /**
16
16
  * CommandAlertDialogTrigger
17
17
  */
@@ -28,49 +28,49 @@ declare function CommandAlertDialogTrigger({
28
28
  children,
29
29
  disabled,
30
30
  ...props
31
- }: CommandAlertDialogTriggerProps): react_jsx_runtime39.JSX.Element | undefined;
31
+ }: CommandAlertDialogTriggerProps): react_jsx_runtime11.JSX.Element | undefined;
32
32
  /**
33
33
  * CommandAlertDialogContent
34
34
  */
35
35
  declare function CommandAlertDialogContent({
36
36
  children,
37
37
  ...props
38
- }: AlertDialogContentProps): react_jsx_runtime39.JSX.Element;
38
+ }: AlertDialogContentProps): react_jsx_runtime11.JSX.Element;
39
39
  /**
40
40
  * CommandAlertDialogHeader
41
41
  */
42
42
  declare function CommandAlertDialogHeader({
43
43
  children,
44
44
  ...props
45
- }: React.HTMLAttributes<HTMLElement>): react_jsx_runtime39.JSX.Element;
45
+ }: React.HTMLAttributes<HTMLElement>): react_jsx_runtime11.JSX.Element;
46
46
  /**
47
47
  * CommandAlertDialogTitle
48
48
  */
49
49
  declare function CommandAlertDialogTitle({
50
50
  children,
51
51
  ...props
52
- }: React.HTMLAttributes<HTMLElement>): react_jsx_runtime39.JSX.Element;
52
+ }: React.HTMLAttributes<HTMLElement>): react_jsx_runtime11.JSX.Element;
53
53
  /**
54
54
  * CommandAlertDialogDescription
55
55
  */
56
56
  declare function CommandAlertDialogDescription({
57
57
  children,
58
58
  ...props
59
- }: React.HTMLAttributes<HTMLElement>): react_jsx_runtime39.JSX.Element;
59
+ }: React.HTMLAttributes<HTMLElement>): react_jsx_runtime11.JSX.Element;
60
60
  /**
61
61
  * CommandAlertDialogFooter
62
62
  */
63
63
  declare function CommandAlertDialogFooter({
64
64
  children,
65
65
  ...props
66
- }: React.HTMLAttributes<HTMLElement>): react_jsx_runtime39.JSX.Element;
66
+ }: React.HTMLAttributes<HTMLElement>): react_jsx_runtime11.JSX.Element;
67
67
  /**
68
68
  * CommandAlertDialogCancel
69
69
  */
70
70
  declare function CommandAlertDialogCancel({
71
71
  children,
72
72
  ...props
73
- }: AlertDialogCancelProps): react_jsx_runtime39.JSX.Element;
73
+ }: AlertDialogCancelProps): react_jsx_runtime11.JSX.Element;
74
74
  /**
75
75
  * CommandAlertDialogAction
76
76
  */
@@ -87,7 +87,7 @@ declare function CommandAlertDialogAction<TData = unknown, TError = DefaultError
87
87
  children,
88
88
  disabled,
89
89
  ...props
90
- }: CommandAlertDialogActionProps<TData, TError, TVariables, TOnMutateResult>): react_jsx_runtime39.JSX.Element;
90
+ }: CommandAlertDialogActionProps<TData, TError, TVariables, TOnMutateResult>): react_jsx_runtime11.JSX.Element;
91
91
  //#endregion
92
92
  export { CommandAlertDialog, CommandAlertDialogAction, CommandAlertDialogCancel, CommandAlertDialogContent, CommandAlertDialogDescription, CommandAlertDialogFooter, CommandAlertDialogHeader, CommandAlertDialogTitle, CommandAlertDialogTrigger };
93
93
  //# sourceMappingURL=alert-dialog-command.client.d.mts.map