@carlonicora/nextjs-jsonapi 1.0.4 → 1.0.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 (282) hide show
  1. package/dist/{AbstractService-BKlpJA61.d.mts → AbstractService-B2n_JdiC.d.mts} +1 -1
  2. package/dist/{AbstractService-D9eSVKNa.d.ts → AbstractService-DtQTYovo.d.ts} +1 -1
  3. package/dist/{content.interface-Dg2lt_An.d.mts → AuthComponent-CPLvEerw.d.mts} +11 -15
  4. package/dist/{content.interface-BhyAiOFq.d.ts → AuthComponent-m6Qp4Hz6.d.ts} +11 -15
  5. package/dist/{BlockNoteEditor-UVO3VZZE.mjs → BlockNoteEditor-BLVXQPXV.mjs} +14 -18
  6. package/dist/{BlockNoteEditor-UVO3VZZE.mjs.map → BlockNoteEditor-BLVXQPXV.mjs.map} +1 -1
  7. package/dist/{BlockNoteEditor-VFWG6LXI.js → BlockNoteEditor-ZTDHULFT.js} +15 -19
  8. package/dist/BlockNoteEditor-ZTDHULFT.js.map +1 -0
  9. package/dist/JsonApiRequest-O7BGUMFO.mjs +23 -0
  10. package/dist/JsonApiRequest-VARLNKAF.js +23 -0
  11. package/dist/JsonApiRequest-VARLNKAF.js.map +1 -0
  12. package/dist/chunk-2LM6LCJW.mjs +1 -0
  13. package/dist/chunk-3APORDYP.mjs +7783 -0
  14. package/dist/chunk-3APORDYP.mjs.map +1 -0
  15. package/dist/{chunk-TMVHSY3Y.js → chunk-5ZEADNNP.js} +36 -17
  16. package/dist/chunk-5ZEADNNP.js.map +1 -0
  17. package/dist/{chunk-ECDTZBYO.mjs → chunk-74F6BBHH.mjs} +21 -2
  18. package/dist/chunk-74F6BBHH.mjs.map +1 -0
  19. package/dist/{chunk-GYWPEPOH.mjs → chunk-7C5RAEBO.mjs} +72 -68
  20. package/dist/chunk-7C5RAEBO.mjs.map +1 -0
  21. package/dist/chunk-A5DDIABK.js +1 -0
  22. package/dist/{chunk-TEGF6ZWG.js → chunk-AGAJMJ4T.js} +47 -9
  23. package/dist/chunk-AGAJMJ4T.js.map +1 -0
  24. package/dist/{chunk-CXQOWQSY.js → chunk-AYHKQWHH.js} +15 -2
  25. package/dist/chunk-AYHKQWHH.js.map +1 -0
  26. package/dist/{chunk-I2REI7OA.js → chunk-HMHGLXWC.js} +33 -15
  27. package/dist/chunk-HMHGLXWC.js.map +1 -0
  28. package/dist/chunk-IWFGEPAA.mjs +1 -0
  29. package/dist/chunk-JC3WJK65.js +1 -0
  30. package/dist/{chunk-L6EQEAXU.mjs → chunk-PYF2U6WG.mjs} +25 -7
  31. package/dist/chunk-PYF2U6WG.mjs.map +1 -0
  32. package/dist/{chunk-YDVTFM7X.mjs → chunk-RBIVEH2K.mjs} +42 -4
  33. package/dist/chunk-RBIVEH2K.mjs.map +1 -0
  34. package/dist/{chunk-V2JJPI7N.js → chunk-RZO2LOW4.js} +237 -233
  35. package/dist/chunk-RZO2LOW4.js.map +1 -0
  36. package/dist/{chunk-X4BIHJ2B.mjs → chunk-SM63SZCP.mjs} +15 -2
  37. package/dist/chunk-SM63SZCP.mjs.map +1 -0
  38. package/dist/chunk-WEC4YMOS.js +7783 -0
  39. package/dist/chunk-WEC4YMOS.js.map +1 -0
  40. package/dist/client/index.d.mts +21 -2
  41. package/dist/client/index.d.ts +21 -2
  42. package/dist/client/index.js +18 -245
  43. package/dist/client/index.js.map +1 -1
  44. package/dist/client/index.mjs +28 -255
  45. package/dist/client/index.mjs.map +1 -1
  46. package/dist/components/index.d.mts +293 -8
  47. package/dist/components/index.d.ts +293 -8
  48. package/dist/components/index.js +78 -2323
  49. package/dist/components/index.js.map +1 -1
  50. package/dist/components/index.mjs +172 -2417
  51. package/dist/components/index.mjs.map +1 -1
  52. package/dist/{config-hXufftVS.d.ts → config-BmnK65TD.d.mts} +1 -0
  53. package/dist/{config-hXufftVS.d.mts → config-BmnK65TD.d.ts} +1 -0
  54. package/dist/config-DQeAo9Kf.d.mts +49 -0
  55. package/dist/config-DQeAo9Kf.d.ts +49 -0
  56. package/dist/contexts/index.d.mts +109 -21
  57. package/dist/contexts/index.d.ts +109 -21
  58. package/dist/contexts/index.js +39 -7
  59. package/dist/contexts/index.js.map +1 -1
  60. package/dist/contexts/index.mjs +40 -8
  61. package/dist/core/index.d.mts +3 -4
  62. package/dist/core/index.d.ts +3 -4
  63. package/dist/core/index.js +3 -7
  64. package/dist/core/index.js.map +1 -1
  65. package/dist/core/index.mjs +4 -8
  66. package/dist/{d3.link.interface-QMdB22bC.d.mts → d3.link.interface-ClC4Irqp.d.mts} +2 -1
  67. package/dist/{d3.link.interface-QMdB22bC.d.ts → d3.link.interface-ClC4Irqp.d.ts} +2 -1
  68. package/dist/features/index.d.mts +17 -86
  69. package/dist/features/index.d.ts +17 -86
  70. package/dist/features/index.js +7 -16
  71. package/dist/features/index.js.map +1 -1
  72. package/dist/features/index.mjs +10 -19
  73. package/dist/hooks/index.d.mts +18 -43
  74. package/dist/hooks/index.d.ts +18 -43
  75. package/dist/hooks/index.js +20 -7
  76. package/dist/hooks/index.js.map +1 -1
  77. package/dist/hooks/index.mjs +19 -6
  78. package/dist/index.d.mts +10 -6
  79. package/dist/index.d.ts +10 -6
  80. package/dist/index.js +13 -10
  81. package/dist/index.js.map +1 -1
  82. package/dist/index.mjs +22 -19
  83. package/dist/interfaces/index.d.mts +2 -1
  84. package/dist/interfaces/index.d.ts +2 -1
  85. package/dist/notification.interface-BBgMUdLR.d.mts +14 -0
  86. package/dist/notification.interface-gyvT-Z2F.d.ts +14 -0
  87. package/dist/permissions/index.d.mts +2 -3
  88. package/dist/permissions/index.d.ts +2 -3
  89. package/dist/server/index.d.mts +38 -18
  90. package/dist/server/index.d.ts +38 -18
  91. package/dist/server/index.js +70 -2
  92. package/dist/server/index.js.map +1 -1
  93. package/dist/server/index.mjs +68 -0
  94. package/dist/server/index.mjs.map +1 -1
  95. package/dist/types-BUAlgqqh.d.ts +39 -0
  96. package/dist/{types-DluCaP1I.d.ts → types-Bl61ob-7.d.mts} +19 -2
  97. package/dist/{types-lQVA8d_P.d.mts → types-Bl61ob-7.d.ts} +19 -2
  98. package/dist/types-iVdVY7ba.d.mts +39 -0
  99. package/dist/useSocket-Cn7fB_B1.d.mts +25 -0
  100. package/dist/useSocket-DzMKRKCA.d.ts +25 -0
  101. package/dist/user.fields-CbdObSmS.d.mts +18 -0
  102. package/dist/user.fields-CbdObSmS.d.ts +18 -0
  103. package/dist/utils/index.d.mts +1 -2
  104. package/dist/utils/index.d.ts +1 -2
  105. package/package.json +5 -3
  106. package/src/client/index.ts +13 -0
  107. package/src/components/forms/index.ts +1 -0
  108. package/src/components/index.ts +5 -0
  109. package/src/components/tables/ContentListTable.tsx +1 -0
  110. package/src/contexts/CommonContext.tsx +52 -0
  111. package/src/contexts/SharedContext.tsx +2 -0
  112. package/src/contexts/SocketContext.tsx +65 -0
  113. package/src/contexts/index.ts +6 -1
  114. package/src/features/auth/components/containers/AuthContainer.tsx +32 -0
  115. package/src/features/auth/components/containers/index.ts +1 -0
  116. package/src/features/auth/components/details/LandingComponent.tsx +39 -0
  117. package/src/features/auth/components/details/index.ts +1 -0
  118. package/src/features/auth/components/forms/AcceptInvitation.tsx +136 -0
  119. package/src/features/auth/components/forms/ActivateAccount.tsx +75 -0
  120. package/src/features/auth/components/forms/Cookies.tsx +32 -0
  121. package/src/features/auth/components/forms/ForgotPassword.tsx +108 -0
  122. package/src/features/auth/components/forms/Login.tsx +118 -0
  123. package/src/features/auth/components/forms/Logout.tsx +19 -0
  124. package/src/features/auth/components/forms/RefreshUser.tsx +39 -0
  125. package/src/features/auth/components/forms/Register.tsx +150 -0
  126. package/src/features/auth/components/forms/ResetPassword.tsx +126 -0
  127. package/src/features/auth/components/forms/index.ts +9 -0
  128. package/src/features/auth/components/index.ts +3 -0
  129. package/src/features/auth/contexts/AuthContext.tsx +77 -0
  130. package/src/features/auth/contexts/index.ts +1 -0
  131. package/src/features/auth/enums/AuthComponent.ts +9 -0
  132. package/src/features/auth/enums/index.ts +1 -0
  133. package/src/features/auth/index.ts +2 -1
  134. package/src/features/auth/utils/AuthCookies.ts +134 -0
  135. package/src/features/auth/utils/index.ts +1 -0
  136. package/src/features/company/components/containers/AdminCompanyContainer.tsx +26 -0
  137. package/src/features/company/components/containers/CompanyContainer.tsx +17 -0
  138. package/src/features/company/components/containers/index.ts +2 -0
  139. package/src/features/company/components/details/CompanyDetails.tsx +26 -0
  140. package/src/features/company/components/details/index.ts +1 -0
  141. package/src/features/company/components/forms/CompanyConfigurationEditor.tsx +151 -0
  142. package/src/features/company/components/forms/CompanyConfigurationSecurityForm.tsx +97 -0
  143. package/src/features/company/components/forms/CompanyDeleter.tsx +121 -0
  144. package/src/features/company/components/forms/CompanyEditor.tsx +245 -0
  145. package/src/features/company/components/forms/CompanyLicense.tsx +213 -0
  146. package/src/features/company/components/forms/index.ts +5 -0
  147. package/src/features/company/components/index.ts +4 -0
  148. package/src/features/company/components/lists/CompaniesList.tsx +31 -0
  149. package/src/features/company/components/lists/index.ts +1 -0
  150. package/src/features/company/contexts/CompanyContext.tsx +99 -0
  151. package/src/features/company/contexts/index.ts +0 -0
  152. package/src/features/company/hooks/index.ts +1 -0
  153. package/src/features/company/hooks/useCompanyTableStructure.tsx +82 -0
  154. package/src/features/feature/components/forms/FormFeatures.tsx +141 -140
  155. package/src/features/feature/components/forms/index.ts +1 -0
  156. package/src/features/feature/components/index.ts +1 -1
  157. package/src/features/feature/index.ts +1 -2
  158. package/src/features/module/index.ts +1 -1
  159. package/src/features/notification/components/common/NotificationErrorBoundary.tsx +51 -0
  160. package/src/features/notification/components/common/index.ts +1 -0
  161. package/src/features/notification/components/containers/NotificationsListContainer.tsx +44 -0
  162. package/src/features/notification/components/containers/index.ts +1 -0
  163. package/src/features/notification/components/index.ts +5 -0
  164. package/src/features/notification/components/lists/NotificationsList.tsx +129 -0
  165. package/src/features/notification/components/lists/index.ts +1 -0
  166. package/src/features/notification/components/modals/NotificationModal.tsx +220 -0
  167. package/src/features/notification/components/modals/index.ts +1 -0
  168. package/src/features/notification/components/notifications/Notification.tsx +120 -0
  169. package/src/features/notification/components/notifications/PushNotificationProvider.tsx +9 -0
  170. package/src/features/notification/components/notifications/index.ts +2 -0
  171. package/src/features/notification/contexts/NotificationContext.tsx +187 -0
  172. package/src/features/notification/contexts/index.ts +1 -0
  173. package/src/features/notification/index.ts +1 -1
  174. package/src/features/push/index.ts +1 -1
  175. package/src/features/role/components/containers/RoleContainer.tsx +18 -0
  176. package/src/features/role/components/containers/index.ts +1 -0
  177. package/src/features/role/components/details/RoleDetails.tsx +21 -0
  178. package/src/features/role/components/details/index.ts +1 -0
  179. package/src/features/role/components/forms/FormRoles.tsx +82 -0
  180. package/src/features/role/components/forms/RemoveUserFromRole.tsx +108 -0
  181. package/src/features/role/components/forms/UserRoleAdd.tsx +128 -0
  182. package/src/features/role/components/forms/index.ts +3 -0
  183. package/src/features/role/components/index.ts +4 -0
  184. package/src/features/role/components/lists/RolesList.tsx +27 -0
  185. package/src/features/role/components/lists/UserRolesList.tsx +31 -0
  186. package/src/features/role/components/lists/index.ts +2 -0
  187. package/src/features/role/contexts/RoleContext.tsx +84 -0
  188. package/src/features/role/contexts/index.ts +1 -0
  189. package/src/features/role/hooks/index.ts +1 -0
  190. package/src/features/role/hooks/useRoleTableStructure.tsx +72 -0
  191. package/src/features/s3/index.ts +1 -1
  192. package/src/features/user/components/containers/UserContainer.tsx +23 -0
  193. package/src/features/user/components/containers/UserIndexContainer.tsx +12 -0
  194. package/src/features/user/components/containers/UsersListContainer.tsx +36 -0
  195. package/src/features/user/components/containers/index.ts +3 -0
  196. package/src/features/user/components/details/UserDetails.tsx +74 -0
  197. package/src/features/user/components/details/UserIndexDetails.tsx +28 -0
  198. package/src/features/user/components/details/index.ts +2 -0
  199. package/src/features/user/components/forms/RoleUserAdd.tsx +93 -0
  200. package/src/features/user/components/forms/UserAvatarEditor.tsx +78 -0
  201. package/src/features/user/components/forms/UserDeleter.tsx +49 -0
  202. package/src/features/user/components/forms/UserEditor.tsx +319 -0
  203. package/src/features/user/components/forms/UserMultiSelect.tsx +218 -0
  204. package/src/features/user/components/forms/UserReactivator.tsx +79 -0
  205. package/src/features/user/components/forms/UserResentInvitationEmail.tsx +88 -0
  206. package/src/features/user/components/forms/UserSelector.tsx +185 -0
  207. package/src/features/user/components/forms/index.ts +8 -0
  208. package/src/features/user/components/index.ts +3 -0
  209. package/src/features/user/components/lists/AdminUsersList.tsx +41 -0
  210. package/src/features/user/components/lists/CompanyUsersList.tsx +44 -0
  211. package/src/features/user/components/lists/RelevantUsersList.tsx +30 -0
  212. package/src/features/user/components/lists/RoleUsersList.tsx +31 -0
  213. package/src/features/user/components/lists/UserListInAdd.tsx +53 -0
  214. package/src/features/user/components/lists/UsersList.tsx +30 -0
  215. package/src/features/user/components/lists/UsersListByContentIds.tsx +30 -0
  216. package/src/features/user/components/lists/index.ts +7 -0
  217. package/src/features/user/components/widgets/UserAvatarList.tsx +31 -0
  218. package/src/features/user/components/widgets/UserSearchPopover.tsx +89 -0
  219. package/src/features/user/contexts/UserContext.tsx +106 -0
  220. package/src/features/user/contexts/index.ts +1 -0
  221. package/src/features/user/hooks/index.ts +2 -0
  222. package/src/features/user/hooks/useUserSearch.ts +53 -0
  223. package/src/features/user/hooks/useUserTableStructure.tsx +115 -0
  224. package/src/features/user/index.ts +0 -1
  225. package/src/hooks/index.ts +4 -0
  226. package/src/hooks/useCustomD3Graph.tsx +2 -0
  227. package/src/hooks/useNotificationSync.ts +20 -0
  228. package/src/hooks/usePageTracker.ts +69 -0
  229. package/src/hooks/usePushNotifications.ts +82 -0
  230. package/src/hooks/useSocket.ts +201 -0
  231. package/src/hooks/useTableGenerator.ts +6 -2
  232. package/src/i18n/config.ts +1 -0
  233. package/src/index.ts +4 -0
  234. package/src/interfaces/d3.link.interface.ts +2 -1
  235. package/src/server/ServerSession.ts +103 -0
  236. package/src/server/index.ts +2 -1
  237. package/src/unified/JsonApiRequest.ts +23 -0
  238. package/dist/ApiRequestDataTypeInterface-CUKFDBx2.d.mts +0 -20
  239. package/dist/ApiRequestDataTypeInterface-CUKFDBx2.d.ts +0 -20
  240. package/dist/BlockNoteEditor-VFWG6LXI.js.map +0 -1
  241. package/dist/JsonApiRequest-S3ICLM7B.mjs +0 -20
  242. package/dist/JsonApiRequest-ZZLSP26T.js +0 -20
  243. package/dist/JsonApiRequest-ZZLSP26T.js.map +0 -1
  244. package/dist/chunk-366S2JCC.mjs +0 -31
  245. package/dist/chunk-366S2JCC.mjs.map +0 -1
  246. package/dist/chunk-5W6AKZE6.mjs +0 -131
  247. package/dist/chunk-5W6AKZE6.mjs.map +0 -1
  248. package/dist/chunk-A3J3AAYM.mjs +0 -97
  249. package/dist/chunk-A3J3AAYM.mjs.map +0 -1
  250. package/dist/chunk-AWONBQQP.js +0 -97
  251. package/dist/chunk-AWONBQQP.js.map +0 -1
  252. package/dist/chunk-CXQOWQSY.js.map +0 -1
  253. package/dist/chunk-DKKMWBP4.mjs +0 -1
  254. package/dist/chunk-DKKMWBP4.mjs.map +0 -1
  255. package/dist/chunk-DO2HLAZO.js +0 -48
  256. package/dist/chunk-DO2HLAZO.js.map +0 -1
  257. package/dist/chunk-DZXDB3K2.mjs +0 -17
  258. package/dist/chunk-DZXDB3K2.mjs.map +0 -1
  259. package/dist/chunk-ECDTZBYO.mjs.map +0 -1
  260. package/dist/chunk-FY4SXJGU.js +0 -806
  261. package/dist/chunk-FY4SXJGU.js.map +0 -1
  262. package/dist/chunk-GYWPEPOH.mjs.map +0 -1
  263. package/dist/chunk-H6FMOA6B.js +0 -1
  264. package/dist/chunk-H6FMOA6B.js.map +0 -1
  265. package/dist/chunk-I2REI7OA.js.map +0 -1
  266. package/dist/chunk-J4Q36PMP.js +0 -31
  267. package/dist/chunk-J4Q36PMP.js.map +0 -1
  268. package/dist/chunk-L6EQEAXU.mjs.map +0 -1
  269. package/dist/chunk-MFO27OHB.mjs +0 -48
  270. package/dist/chunk-MFO27OHB.mjs.map +0 -1
  271. package/dist/chunk-RAF7PNLG.js +0 -131
  272. package/dist/chunk-RAF7PNLG.js.map +0 -1
  273. package/dist/chunk-RUR22SVM.js +0 -17
  274. package/dist/chunk-RUR22SVM.js.map +0 -1
  275. package/dist/chunk-TEGF6ZWG.js.map +0 -1
  276. package/dist/chunk-TMVHSY3Y.js.map +0 -1
  277. package/dist/chunk-V2JJPI7N.js.map +0 -1
  278. package/dist/chunk-WWWMJZEF.mjs +0 -806
  279. package/dist/chunk-WWWMJZEF.mjs.map +0 -1
  280. package/dist/chunk-X4BIHJ2B.mjs.map +0 -1
  281. package/dist/chunk-YDVTFM7X.mjs.map +0 -1
  282. /package/dist/{JsonApiRequest-S3ICLM7B.mjs.map → JsonApiRequest-O7BGUMFO.mjs.map} +0 -0
@@ -1,20 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
-
4
-
5
-
6
-
7
-
8
- var _chunkTMVHSY3Yjs = require('./chunk-TMVHSY3Y.js');
9
- require('./chunk-TEGF6ZWG.js');
10
- require('./chunk-DO2HLAZO.js');
11
- require('./chunk-7QVYU63E.js');
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
- exports.JsonApiDelete = _chunkTMVHSY3Yjs.JsonApiDelete; exports.JsonApiGet = _chunkTMVHSY3Yjs.JsonApiGet; exports.JsonApiPatch = _chunkTMVHSY3Yjs.JsonApiPatch; exports.JsonApiPost = _chunkTMVHSY3Yjs.JsonApiPost; exports.JsonApiPut = _chunkTMVHSY3Yjs.JsonApiPut; exports.configureJsonApi = _chunkTMVHSY3Yjs.configureJsonApi;
20
- //# sourceMappingURL=JsonApiRequest-ZZLSP26T.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/JsonApiRequest-ZZLSP26T.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,mUAAC","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/JsonApiRequest-ZZLSP26T.js"}
@@ -1,31 +0,0 @@
1
- import {
2
- DataClassRegistry
3
- } from "./chunk-MFO27OHB.mjs";
4
- import {
5
- __name
6
- } from "./chunk-PAWJFY3S.mjs";
7
-
8
- // src/core/factories/RehydrationFactory.ts
9
- var RehydrationFactory = class {
10
- static {
11
- __name(this, "RehydrationFactory");
12
- }
13
- static rehydrate(classKey, data) {
14
- const factoryClass = DataClassRegistry.get(classKey);
15
- const instance = new factoryClass();
16
- return instance.rehydrate(data);
17
- }
18
- static rehydrateList(classKey, data) {
19
- const factoryClass = DataClassRegistry.get(classKey);
20
- const response = data.map((item) => {
21
- const instance = new factoryClass();
22
- return instance.rehydrate(item);
23
- });
24
- return response;
25
- }
26
- };
27
-
28
- export {
29
- RehydrationFactory
30
- };
31
- //# sourceMappingURL=chunk-366S2JCC.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/factories/RehydrationFactory.ts"],"sourcesContent":["import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\nimport { JsonApiHydratedDataInterface } from \"../interfaces/JsonApiHydratedDataInterface\";\nimport { DataClassRegistry } from \"../registry/DataClassRegistry\";\n\nexport class RehydrationFactory {\n public static rehydrate<T extends ApiDataInterface>(\n classKey: ApiRequestDataTypeInterface,\n data: JsonApiHydratedDataInterface,\n ): T {\n const factoryClass = DataClassRegistry.get(classKey);\n\n const instance = new factoryClass();\n return instance.rehydrate(data) as T;\n }\n\n public static rehydrateList<T extends ApiDataInterface>(\n classKey: ApiRequestDataTypeInterface,\n data: JsonApiHydratedDataInterface[],\n ): T[] {\n const factoryClass = DataClassRegistry.get(classKey);\n\n const response = data.map((item: JsonApiHydratedDataInterface) => {\n const instance = new factoryClass();\n return instance.rehydrate(item) as T;\n });\n\n return response;\n }\n}\n"],"mappings":";;;;;;;;AAKO,IAAM,qBAAN,MAAyB;AAAA,EALhC,OAKgC;AAAA;AAAA;AAAA,EAC9B,OAAc,UACZ,UACA,MACG;AACH,UAAM,eAAe,kBAAkB,IAAI,QAAQ;AAEnD,UAAM,WAAW,IAAI,aAAa;AAClC,WAAO,SAAS,UAAU,IAAI;AAAA,EAChC;AAAA,EAEA,OAAc,cACZ,UACA,MACK;AACL,UAAM,eAAe,kBAAkB,IAAI,QAAQ;AAEnD,UAAM,WAAW,KAAK,IAAI,CAAC,SAAuC;AAChE,YAAM,WAAW,IAAI,aAAa;AAClC,aAAO,SAAS,UAAU,IAAI;AAAA,IAChC,CAAC;AAED,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -1,131 +0,0 @@
1
- import {
2
- checkPermissions
3
- } from "./chunk-DD3KISNB.mjs";
4
- import {
5
- getRoleId
6
- } from "./chunk-BLWVZK6J.mjs";
7
- import {
8
- Modules,
9
- rehydrate
10
- } from "./chunk-L6EQEAXU.mjs";
11
- import {
12
- __name
13
- } from "./chunk-PAWJFY3S.mjs";
14
-
15
- // src/contexts/SharedContext.tsx
16
- import { createContext, useContext } from "react";
17
- import { jsx } from "react/jsx-runtime";
18
- var SharedContext = createContext(null);
19
- var SharedProvider = /* @__PURE__ */ __name(({ children, value }) => {
20
- return /* @__PURE__ */ jsx(SharedContext.Provider, { value, children });
21
- }, "SharedProvider");
22
- var useSharedContext = /* @__PURE__ */ __name(() => {
23
- const context = useContext(SharedContext);
24
- if (!context) {
25
- throw new Error("useSharedContext must be used within a SharedProvider");
26
- }
27
- return context;
28
- }, "useSharedContext");
29
-
30
- // src/features/user/contexts/CurrentUserContext.tsx
31
- import { getCookie } from "cookies-next";
32
- import { useAtom } from "jotai";
33
- import { atomWithStorage } from "jotai/utils";
34
- import { usePathname } from "next/navigation";
35
- import { createContext as createContext2, useContext as useContext2, useEffect } from "react";
36
- import { jsx as jsx2 } from "react/jsx-runtime";
37
- var userAtom = atomWithStorage("user", null);
38
- var CurrentUserContext = createContext2(void 0);
39
- var CurrentUserProvider = /* @__PURE__ */ __name(({ children }) => {
40
- const path = usePathname();
41
- const [dehydratedUser, setDehydratedUser] = useAtom(userAtom);
42
- useEffect(() => {
43
- const token = getCookie("token");
44
- if (!token && dehydratedUser) setDehydratedUser(null);
45
- }, [dehydratedUser, setDehydratedUser]);
46
- const matchUrlToModule = /* @__PURE__ */ __name((params) => {
47
- const moduleKeys = Object.getOwnPropertyNames(Modules).filter(
48
- (key) => key !== "prototype" && key !== "_factory" && key !== "length" && key !== "name"
49
- );
50
- const matchedModuleKey = moduleKeys.find((key) => {
51
- const descriptor2 = Object.getOwnPropertyDescriptor(Modules, key);
52
- if (!descriptor2?.get) return false;
53
- const selectedModule = descriptor2.get.call(Modules);
54
- return path.toLowerCase().startsWith(selectedModule.pageUrl?.toLowerCase());
55
- });
56
- if (!matchedModuleKey) return void 0;
57
- const descriptor = Object.getOwnPropertyDescriptor(Modules, matchedModuleKey);
58
- return descriptor?.get?.call(Modules);
59
- }, "matchUrlToModule");
60
- const currentUser = dehydratedUser ? rehydrate(Modules.User, dehydratedUser) : null;
61
- const company = currentUser?.company ?? null;
62
- const setUser = /* @__PURE__ */ __name((user) => {
63
- if (user) setDehydratedUser(user.dehydrate());
64
- else setDehydratedUser(null);
65
- }, "setUser");
66
- const hasRole = /* @__PURE__ */ __name((roleId) => {
67
- if (!currentUser) return false;
68
- return !!currentUser.roles?.some((userRole) => userRole.id === roleId);
69
- }, "hasRole");
70
- const hasAccesToFeature = /* @__PURE__ */ __name((featureIdentifier) => {
71
- if (hasRole(getRoleId().Administrator)) return true;
72
- if (!company) return false;
73
- return company.features.some((feature) => feature.id === featureIdentifier);
74
- }, "hasAccesToFeature");
75
- function hasPermissionToModule(params) {
76
- if (!currentUser) return false;
77
- if (!!params.module.feature && !hasAccesToFeature(params.module.feature)) return false;
78
- return checkPermissions({ module: params.module, action: params.action, data: params.data, user: currentUser });
79
- }
80
- __name(hasPermissionToModule, "hasPermissionToModule");
81
- function hasPermissionToModules(params) {
82
- if (!currentUser) return false;
83
- if (!params.modules.every((module) => !module.feature || hasAccesToFeature(module.feature))) return false;
84
- return params.modules.every(
85
- (module) => checkPermissions({ module, action: params.action, data: params.data, user: currentUser })
86
- );
87
- }
88
- __name(hasPermissionToModules, "hasPermissionToModules");
89
- function hasPermissionToPath(path2) {
90
- if (!currentUser) return false;
91
- if (path2 === "#" || path2 === "/") return true;
92
- const selectedModule = matchUrlToModule({ path: path2 });
93
- if (!selectedModule) return true;
94
- const response = hasPermissionToModule({ module: selectedModule, action: "read" /* Read */ });
95
- return response;
96
- }
97
- __name(hasPermissionToPath, "hasPermissionToPath");
98
- return /* @__PURE__ */ jsx2(
99
- CurrentUserContext.Provider,
100
- {
101
- value: {
102
- currentUser,
103
- company,
104
- setUser,
105
- hasPermissionToModule,
106
- hasPermissionToModules,
107
- hasPermissionToPath,
108
- hasAccesToFeature,
109
- matchUrlToModule,
110
- hasRole
111
- },
112
- children
113
- }
114
- );
115
- }, "CurrentUserProvider");
116
- function useCurrentUserContext() {
117
- const context = useContext2(CurrentUserContext);
118
- if (context === void 0) {
119
- throw new Error("useCurrentUserContext must be used within a UserProvider");
120
- }
121
- return context;
122
- }
123
- __name(useCurrentUserContext, "useCurrentUserContext");
124
-
125
- export {
126
- SharedProvider,
127
- useSharedContext,
128
- CurrentUserProvider,
129
- useCurrentUserContext
130
- };
131
- //# sourceMappingURL=chunk-5W6AKZE6.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/contexts/SharedContext.tsx","../src/features/user/contexts/CurrentUserContext.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext } from \"react\";\nimport { BreadcrumbItemData } from \"../interfaces\";\n\nconst SharedContext = createContext<{\n breadcrumbs: BreadcrumbItemData[];\n title: {\n type: string | string[];\n element?: string;\n functions?: ReactNode;\n };\n} | null>(null);\n\ninterface SharedProviderProps {\n children: ReactNode;\n value: {\n breadcrumbs: BreadcrumbItemData[];\n title: {\n type: string;\n element?: string;\n functions?: ReactNode;\n };\n };\n}\n\nexport const SharedProvider = ({ children, value }: SharedProviderProps) => {\n return <SharedContext.Provider value={value}>{children}</SharedContext.Provider>;\n};\n\nexport const useSharedContext = () => {\n const context = useContext(SharedContext);\n if (!context) {\n throw new Error(\"useSharedContext must be used within a SharedProvider\");\n }\n return context;\n};\n","\"use client\";\n\nimport { getCookie } from \"cookies-next\";\nimport { useAtom } from \"jotai\";\nimport { atomWithStorage } from \"jotai/utils\";\nimport { usePathname } from \"next/navigation\";\nimport React, { createContext, useContext, useEffect } from \"react\";\nimport { Modules, rehydrate } from \"../../../core\";\nimport { Action, checkPermissions, ModuleWithPermissions } from \"../../../permissions\";\nimport { getRoleId } from \"../../../roles\";\nimport { CompanyInterface } from \"../../company\";\nimport { FeatureInterface } from \"../../feature\";\nimport { RoleInterface } from \"../../role\";\nimport { UserInterface } from \"../data\";\n\nexport interface CurrentUserContextType<T extends UserInterface = UserInterface> {\n currentUser: T | null;\n company: CompanyInterface | null;\n setUser: (user?: T) => void;\n hasPermissionToModule: <M extends ModuleWithPermissions>(params: {\n module: M;\n action: Action;\n data?: any;\n }) => boolean;\n hasPermissionToModules: <M extends ModuleWithPermissions>(params: {\n modules: M[];\n action: Action;\n data?: any;\n }) => boolean;\n hasPermissionToPath: (path: string) => boolean;\n hasAccesToFeature: (featureIdentifier: string) => boolean;\n matchUrlToModule: (prarms?: { path: string }) => ModuleWithPermissions | undefined;\n hasRole: (roleId: string) => boolean;\n}\n\nconst userAtom = atomWithStorage(\"user\", null);\n\nconst CurrentUserContext = createContext<CurrentUserContextType | undefined>(undefined);\n\nexport const CurrentUserProvider = ({ children }: { children: React.ReactNode }) => {\n const path = usePathname();\n\n const [dehydratedUser, setDehydratedUser] = useAtom(userAtom);\n\n useEffect(() => {\n const token = getCookie(\"token\");\n if (!token && dehydratedUser) setDehydratedUser(null);\n }, [dehydratedUser, setDehydratedUser]);\n\n const matchUrlToModule = (params?: { path: string }): ModuleWithPermissions | undefined => {\n const moduleKeys = Object.getOwnPropertyNames(Modules).filter(\n (key) => key !== \"prototype\" && key !== \"_factory\" && key !== \"length\" && key !== \"name\",\n );\n\n const matchedModuleKey = moduleKeys.find((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(Modules, key);\n\n if (!descriptor?.get) return false;\n\n const selectedModule = descriptor.get.call(Modules);\n\n return path.toLowerCase().startsWith(selectedModule.pageUrl?.toLowerCase());\n });\n\n if (!matchedModuleKey) return undefined;\n\n const descriptor = Object.getOwnPropertyDescriptor(Modules, matchedModuleKey);\n return descriptor?.get?.call(Modules);\n };\n\n const currentUser = dehydratedUser ? rehydrate<UserInterface>(Modules.User, dehydratedUser) : null;\n\n const company = currentUser?.company ?? null;\n\n const setUser = (user?: UserInterface): void => {\n if (user) setDehydratedUser(user.dehydrate() as any);\n else setDehydratedUser(null);\n };\n\n const hasRole = (roleId: string): boolean => {\n if (!currentUser) return false;\n\n return !!currentUser.roles?.some((userRole: RoleInterface) => userRole.id === roleId);\n };\n\n const hasAccesToFeature = (featureIdentifier: string): boolean => {\n if (hasRole(getRoleId().Administrator)) return true;\n if (!company) return false;\n\n return company.features.some((feature: FeatureInterface) => feature.id === featureIdentifier);\n };\n\n function hasPermissionToModule<M extends ModuleWithPermissions>(params: {\n module: M;\n action: Action;\n data?: M extends ModuleWithPermissions ? any : never;\n }): boolean {\n if (!currentUser) return false;\n\n if (!!params.module.feature && !hasAccesToFeature(params.module.feature)) return false;\n\n return checkPermissions({ module: params.module, action: params.action, data: params.data, user: currentUser });\n }\n\n function hasPermissionToModules<M extends ModuleWithPermissions>(params: {\n modules: M[];\n action: Action;\n data?: M extends ModuleWithPermissions ? any : never;\n }): boolean {\n if (!currentUser) return false;\n\n if (!params.modules.every((module) => !module.feature || hasAccesToFeature(module.feature))) return false;\n\n return params.modules.every((module) =>\n checkPermissions({ module: module, action: params.action, data: params.data, user: currentUser }),\n );\n }\n\n function hasPermissionToPath(path: string): boolean {\n if (!currentUser) return false;\n if (path === \"#\" || path === \"/\") return true;\n\n const selectedModule = matchUrlToModule({ path: path });\n if (!selectedModule) return true;\n\n const response = hasPermissionToModule({ module: selectedModule, action: Action.Read });\n\n return response;\n }\n\n return (\n <CurrentUserContext.Provider\n value={{\n currentUser: currentUser,\n company: company,\n setUser: setUser,\n hasPermissionToModule: hasPermissionToModule,\n hasPermissionToModules: hasPermissionToModules,\n hasPermissionToPath: hasPermissionToPath,\n hasAccesToFeature: hasAccesToFeature,\n matchUrlToModule: matchUrlToModule,\n hasRole: hasRole,\n }}\n >\n {children}\n </CurrentUserContext.Provider>\n );\n};\n\nexport function useCurrentUserContext<T extends UserInterface = UserInterface>(): CurrentUserContextType<T> {\n const context = useContext(CurrentUserContext);\n if (context === undefined) {\n throw new Error(\"useCurrentUserContext must be used within a UserProvider\");\n }\n return context as unknown as CurrentUserContextType<T>;\n}\n"],"mappings":"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","names":["createContext","useContext","jsx","createContext","descriptor","path","useContext"]}
@@ -1,97 +0,0 @@
1
- import {
2
- Avatar,
3
- AvatarFallback,
4
- AvatarImage,
5
- Link,
6
- Tooltip,
7
- TooltipContent,
8
- TooltipTrigger
9
- } from "./chunk-IWFGEPAA.mjs";
10
- import {
11
- cn
12
- } from "./chunk-2LM6LCJW.mjs";
13
- import {
14
- usePageUrlGenerator
15
- } from "./chunk-WWWMJZEF.mjs";
16
- import {
17
- Modules
18
- } from "./chunk-L6EQEAXU.mjs";
19
- import {
20
- __name
21
- } from "./chunk-PAWJFY3S.mjs";
22
-
23
- // src/features/user/components/widgets/UserAvatar.tsx
24
- import { jsx, jsxs } from "react/jsx-runtime";
25
- function UserAvatar({ user, className, showFull, showLink }) {
26
- const generateUrl = usePageUrlGenerator();
27
- const getInitial = /* @__PURE__ */ __name((param) => {
28
- if (!param) return "";
29
- return param[0].toUpperCase();
30
- }, "getInitial");
31
- const getInitials = /* @__PURE__ */ __name((name) => {
32
- const words = name.split(" ");
33
- const initials = words.length > 1 ? getInitial(words[0][0]) + getInitial(words[words.length - 1][0]) : getInitial(words[0][0]);
34
- return initials ?? "";
35
- }, "getInitials");
36
- const getAvatar = /* @__PURE__ */ __name(() => {
37
- return /* @__PURE__ */ jsx("div", { className: "*:ring-border *:ring-1", children: /* @__PURE__ */ jsxs(Avatar, { className: `h-6 w-6 ${className}`, children: [
38
- /* @__PURE__ */ jsx(AvatarImage, { className: "object-cover", src: user?.avatar }),
39
- /* @__PURE__ */ jsx(AvatarFallback, { children: getInitials(user.name) })
40
- ] }) });
41
- }, "getAvatar");
42
- return /* @__PURE__ */ jsxs(Tooltip, { children: [
43
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: showLink === false ? (
44
- // If showLink is explicitly false, never show a link
45
- showFull ? /* @__PURE__ */ jsxs("div", { className: cn(`mb-2 flex w-full flex-row items-center justify-start gap-x-2 text-sm`, className), children: [
46
- getAvatar(),
47
- user.name
48
- ] }) : getAvatar()
49
- ) : showFull ? /* @__PURE__ */ jsx(
50
- Link,
51
- {
52
- href: generateUrl({ page: Modules.User, id: user.id }),
53
- className: cn(`mb-2 flex w-full flex-row items-center justify-start gap-x-2 text-sm`, className),
54
- onClick: (e) => e.stopPropagation(),
55
- children: /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-row items-center gap-x-2", children: [
56
- getAvatar(),
57
- user.name
58
- ] })
59
- }
60
- ) : showLink ? /* @__PURE__ */ jsx(Link, { href: generateUrl({ page: Modules.User, id: user.id }), className, children: getAvatar() }) : getAvatar() }),
61
- /* @__PURE__ */ jsx(TooltipContent, { children: user.name })
62
- ] });
63
- }
64
- __name(UserAvatar, "UserAvatar");
65
-
66
- // src/features/user/components/lists/ContributorsList.tsx
67
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
68
- function ContributorsList({ content }) {
69
- const generateUrl = usePageUrlGenerator();
70
- return /* @__PURE__ */ jsxs2("div", { className: "flex flex-row items-center", children: [
71
- /* @__PURE__ */ jsx2(
72
- Link,
73
- {
74
- href: generateUrl({ page: Modules.User, id: content.author.id }),
75
- onClick: (e) => e.stopPropagation(),
76
- children: /* @__PURE__ */ jsx2(UserAvatar, { user: content.author, className: "mr-1 h-6 w-6" })
77
- },
78
- content.author.id
79
- ),
80
- /* @__PURE__ */ jsx2("div", { className: "flex flex-row-reverse justify-end -space-x-1 space-x-reverse", children: content.editors.filter((editor) => editor.id !== content.author.id).map((editor) => /* @__PURE__ */ jsx2(
81
- Link,
82
- {
83
- href: generateUrl({ page: Modules.User, id: editor.id }),
84
- onClick: (e) => e.stopPropagation(),
85
- children: /* @__PURE__ */ jsx2(UserAvatar, { user: editor, className: "h-5 w-5" })
86
- },
87
- editor.id
88
- )) })
89
- ] });
90
- }
91
- __name(ContributorsList, "ContributorsList");
92
-
93
- export {
94
- UserAvatar,
95
- ContributorsList
96
- };
97
- //# sourceMappingURL=chunk-A3J3AAYM.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/features/user/components/widgets/UserAvatar.tsx","../src/features/user/components/lists/ContributorsList.tsx"],"sourcesContent":["\"use client\";\n\nimport { Modules } from \"../../../../core\";\nimport { usePageUrlGenerator } from \"../../../../hooks\";\nimport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n Link,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../../../shadcnui\";\nimport { cn } from \"../../../../utils\";\nimport { UserInterface } from \"../../data\";\n\ntype UserAvatarProps = {\n user: UserInterface;\n className?: string;\n showFull?: boolean;\n showLink?: boolean;\n};\n\nexport function UserAvatar({ user, className, showFull, showLink }: UserAvatarProps) {\n const generateUrl = usePageUrlGenerator();\n\n const getInitial = (param?: string) => {\n if (!param) return \"\";\n return param[0].toUpperCase();\n };\n\n const getInitials = (name: string) => {\n const words = name.split(\" \");\n const initials =\n words.length > 1 ? getInitial(words[0][0]) + getInitial(words[words.length - 1][0]) : getInitial(words[0][0]);\n\n return initials ?? \"\";\n };\n\n const getAvatar = () => {\n return (\n <div className=\"*:ring-border *:ring-1\">\n <Avatar className={`h-6 w-6 ${className}`}>\n <AvatarImage className=\"object-cover\" src={user?.avatar} />\n <AvatarFallback>{getInitials(user.name)}</AvatarFallback>\n </Avatar>\n </div>\n );\n };\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {showLink === false ? (\n // If showLink is explicitly false, never show a link\n showFull ? (\n <div className={cn(`mb-2 flex w-full flex-row items-center justify-start gap-x-2 text-sm`, className)}>\n {getAvatar()}\n {user.name}\n </div>\n ) : (\n getAvatar()\n )\n ) : showFull ? (\n <Link\n href={generateUrl({ page: Modules.User, id: user.id })}\n className={cn(`mb-2 flex w-full flex-row items-center justify-start gap-x-2 text-sm`, className)}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex w-full flex-row items-center gap-x-2\">\n {getAvatar()}\n {user.name}\n </div>\n </Link>\n ) : showLink ? (\n <Link href={generateUrl({ page: Modules.User, id: user.id })} className={className}>\n {getAvatar()}\n </Link>\n ) : (\n getAvatar()\n )}\n </TooltipTrigger>\n <TooltipContent>{user.name}</TooltipContent>\n </Tooltip>\n );\n}\n","\"use client\";\n\nimport { Modules } from \"../../../../core\";\nimport { usePageUrlGenerator } from \"../../../../hooks\";\nimport { Link } from \"../../../../shadcnui\";\nimport { ContentInterface } from \"../../../content\";\nimport { UserInterface } from \"../../data\";\nimport { UserAvatar } from \"../widgets\";\n\ntype ContributorsListProps = {\n content: ContentInterface;\n};\n\nexport function ContributorsList({ content }: ContributorsListProps) {\n const generateUrl = usePageUrlGenerator();\n\n return (\n <div className=\"flex flex-row items-center\">\n <Link\n key={content.author.id}\n href={generateUrl({ page: Modules.User, id: content.author.id })}\n onClick={(e) => e.stopPropagation()}\n >\n <UserAvatar user={content.author} className=\"mr-1 h-6 w-6\" />\n </Link>\n <div className=\"flex flex-row-reverse justify-end -space-x-1 space-x-reverse\">\n {content.editors\n .filter((editor: UserInterface) => editor.id !== content.author.id)\n .map((editor: UserInterface) => (\n <Link\n key={editor.id}\n href={generateUrl({ page: Modules.User, id: editor.id })}\n onClick={(e) => e.stopPropagation()}\n >\n <UserAvatar user={editor} className=\"h-5 w-5\" />\n </Link>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0CQ,SACE,KADF;AAnBD,SAAS,WAAW,EAAE,MAAM,WAAW,UAAU,SAAS,GAAoB;AACnF,QAAM,cAAc,oBAAoB;AAExC,QAAM,aAAa,wBAAC,UAAmB;AACrC,QAAI,CAAC,MAAO,QAAO;AACnB,WAAO,MAAM,CAAC,EAAE,YAAY;AAAA,EAC9B,GAHmB;AAKnB,QAAM,cAAc,wBAAC,SAAiB;AACpC,UAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,UAAM,WACJ,MAAM,SAAS,IAAI,WAAW,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,WAAW,MAAM,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,WAAW,MAAM,CAAC,EAAE,CAAC,CAAC;AAE9G,WAAO,YAAY;AAAA,EACrB,GANoB;AAQpB,QAAM,YAAY,6BAAM;AACtB,WACE,oBAAC,SAAI,WAAU,0BACb,+BAAC,UAAO,WAAW,WAAW,SAAS,IACrC;AAAA,0BAAC,eAAY,WAAU,gBAAe,KAAK,MAAM,QAAQ;AAAA,MACzD,oBAAC,kBAAgB,sBAAY,KAAK,IAAI,GAAE;AAAA,OAC1C,GACF;AAAA,EAEJ,GATkB;AAWlB,SACE,qBAAC,WACC;AAAA,wBAAC,kBAAe,SAAO,MACpB,uBAAa;AAAA;AAAA,MAEZ,WACE,qBAAC,SAAI,WAAW,GAAG,wEAAwE,SAAS,GACjG;AAAA,kBAAU;AAAA,QACV,KAAK;AAAA,SACR,IAEA,UAAU;AAAA,QAEV,WACF;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,YAAY,EAAE,MAAM,QAAQ,MAAM,IAAI,KAAK,GAAG,CAAC;AAAA,QACrD,WAAW,GAAG,wEAAwE,SAAS;AAAA,QAC/F,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,QAElC,+BAAC,SAAI,WAAU,6CACZ;AAAA,oBAAU;AAAA,UACV,KAAK;AAAA,WACR;AAAA;AAAA,IACF,IACE,WACF,oBAAC,QAAK,MAAM,YAAY,EAAE,MAAM,QAAQ,MAAM,IAAI,KAAK,GAAG,CAAC,GAAG,WAC3D,oBAAU,GACb,IAEA,UAAU,GAEd;AAAA,IACA,oBAAC,kBAAgB,eAAK,MAAK;AAAA,KAC7B;AAEJ;AA9DgB;;;ACNZ,SAMI,OAAAA,MANJ,QAAAC,aAAA;AAJG,SAAS,iBAAiB,EAAE,QAAQ,GAA0B;AACnE,QAAM,cAAc,oBAAoB;AAExC,SACE,gBAAAA,MAAC,SAAI,WAAU,8BACb;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QAEC,MAAM,YAAY,EAAE,MAAM,QAAQ,MAAM,IAAI,QAAQ,OAAO,GAAG,CAAC;AAAA,QAC/D,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,QAElC,0BAAAA,KAAC,cAAW,MAAM,QAAQ,QAAQ,WAAU,gBAAe;AAAA;AAAA,MAJtD,QAAQ,OAAO;AAAA,IAKtB;AAAA,IACA,gBAAAA,KAAC,SAAI,WAAU,gEACZ,kBAAQ,QACN,OAAO,CAAC,WAA0B,OAAO,OAAO,QAAQ,OAAO,EAAE,EACjE,IAAI,CAAC,WACJ,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,MAAM,YAAY,EAAE,MAAM,QAAQ,MAAM,IAAI,OAAO,GAAG,CAAC;AAAA,QACvD,SAAS,CAAC,MAAM,EAAE,gBAAgB;AAAA,QAElC,0BAAAA,KAAC,cAAW,MAAM,QAAQ,WAAU,WAAU;AAAA;AAAA,MAJzC,OAAO;AAAA,IAKd,CACD,GACL;AAAA,KACF;AAEJ;AA3BgB;","names":["jsx","jsxs"]}
@@ -1,97 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
- var _chunkA5DDIABKjs = require('./chunk-A5DDIABK.js');
10
-
11
-
12
- var _chunkJC3WJK65js = require('./chunk-JC3WJK65.js');
13
-
14
-
15
- var _chunkFY4SXJGUjs = require('./chunk-FY4SXJGU.js');
16
-
17
-
18
- var _chunkI2REI7OAjs = require('./chunk-I2REI7OA.js');
19
-
20
-
21
- var _chunk7QVYU63Ejs = require('./chunk-7QVYU63E.js');
22
-
23
- // src/features/user/components/widgets/UserAvatar.tsx
24
- var _jsxruntime = require('react/jsx-runtime');
25
- function UserAvatar({ user, className, showFull, showLink }) {
26
- const generateUrl = _chunkFY4SXJGUjs.usePageUrlGenerator.call(void 0, );
27
- const getInitial = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (param) => {
28
- if (!param) return "";
29
- return param[0].toUpperCase();
30
- }, "getInitial");
31
- const getInitials = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (name) => {
32
- const words = name.split(" ");
33
- const initials = words.length > 1 ? getInitial(words[0][0]) + getInitial(words[words.length - 1][0]) : getInitial(words[0][0]);
34
- return _nullishCoalesce(initials, () => ( ""));
35
- }, "getInitials");
36
- const getAvatar = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, () => {
37
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "*:ring-border *:ring-1", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkA5DDIABKjs.Avatar, { className: `h-6 w-6 ${className}`, children: [
38
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA5DDIABKjs.AvatarImage, { className: "object-cover", src: _optionalChain([user, 'optionalAccess', _ => _.avatar]) }),
39
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA5DDIABKjs.AvatarFallback, { children: getInitials(user.name) })
40
- ] }) });
41
- }, "getAvatar");
42
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkA5DDIABKjs.Tooltip, { children: [
43
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA5DDIABKjs.TooltipTrigger, { asChild: true, children: showLink === false ? (
44
- // If showLink is explicitly false, never show a link
45
- showFull ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkJC3WJK65js.cn.call(void 0, `mb-2 flex w-full flex-row items-center justify-start gap-x-2 text-sm`, className), children: [
46
- getAvatar(),
47
- user.name
48
- ] }) : getAvatar()
49
- ) : showFull ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
50
- _chunkA5DDIABKjs.Link,
51
- {
52
- href: generateUrl({ page: _chunkI2REI7OAjs.Modules.User, id: user.id }),
53
- className: _chunkJC3WJK65js.cn.call(void 0, `mb-2 flex w-full flex-row items-center justify-start gap-x-2 text-sm`, className),
54
- onClick: (e) => e.stopPropagation(),
55
- children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-row items-center gap-x-2", children: [
56
- getAvatar(),
57
- user.name
58
- ] })
59
- }
60
- ) : showLink ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA5DDIABKjs.Link, { href: generateUrl({ page: _chunkI2REI7OAjs.Modules.User, id: user.id }), className, children: getAvatar() }) : getAvatar() }),
61
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA5DDIABKjs.TooltipContent, { children: user.name })
62
- ] });
63
- }
64
- _chunk7QVYU63Ejs.__name.call(void 0, UserAvatar, "UserAvatar");
65
-
66
- // src/features/user/components/lists/ContributorsList.tsx
67
-
68
- function ContributorsList({ content }) {
69
- const generateUrl = _chunkFY4SXJGUjs.usePageUrlGenerator.call(void 0, );
70
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-row items-center", children: [
71
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
72
- _chunkA5DDIABKjs.Link,
73
- {
74
- href: generateUrl({ page: _chunkI2REI7OAjs.Modules.User, id: content.author.id }),
75
- onClick: (e) => e.stopPropagation(),
76
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, UserAvatar, { user: content.author, className: "mr-1 h-6 w-6" })
77
- },
78
- content.author.id
79
- ),
80
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-row-reverse justify-end -space-x-1 space-x-reverse", children: content.editors.filter((editor) => editor.id !== content.author.id).map((editor) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
81
- _chunkA5DDIABKjs.Link,
82
- {
83
- href: generateUrl({ page: _chunkI2REI7OAjs.Modules.User, id: editor.id }),
84
- onClick: (e) => e.stopPropagation(),
85
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, UserAvatar, { user: editor, className: "h-5 w-5" })
86
- },
87
- editor.id
88
- )) })
89
- ] });
90
- }
91
- _chunk7QVYU63Ejs.__name.call(void 0, ContributorsList, "ContributorsList");
92
-
93
-
94
-
95
-
96
- exports.UserAvatar = UserAvatar; exports.ContributorsList = ContributorsList;
97
- //# sourceMappingURL=chunk-AWONBQQP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-AWONBQQP.js","../src/features/user/components/widgets/UserAvatar.tsx","../src/features/user/components/lists/ContributorsList.tsx"],"names":["jsx"],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACoBQ,+CAAA;AAnBD,SAAS,UAAA,CAAW,EAAE,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,SAAS,CAAA,EAAoB;AACnF,EAAA,MAAM,YAAA,EAAc,kDAAA,CAAoB;AAExC,EAAA,MAAM,WAAA,kBAAa,qCAAA,CAAC,KAAA,EAAA,GAAmB;AACrC,IAAA,GAAA,CAAI,CAAC,KAAA,EAAO,OAAO,EAAA;AACnB,IAAA,OAAO,KAAA,CAAM,CAAC,CAAA,CAAE,WAAA,CAAY,CAAA;AAAA,EAC9B,CAAA,EAHmB,YAAA,CAAA;AAKnB,EAAA,MAAM,YAAA,kBAAc,qCAAA,CAAC,IAAA,EAAA,GAAiB;AACpC,IAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC5B,IAAA,MAAM,SAAA,EACJ,KAAA,CAAM,OAAA,EAAS,EAAA,EAAI,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA,CAAE,CAAC,CAAC,EAAA,EAAI,UAAA,CAAW,KAAA,CAAM,KAAA,CAAM,OAAA,EAAS,CAAC,CAAA,CAAE,CAAC,CAAC,EAAA,EAAI,UAAA,CAAW,KAAA,CAAM,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA;AAE9G,IAAA,wBAAO,QAAA,UAAY,IAAA;AAAA,EACrB,CAAA,EANoB,aAAA,CAAA;AAQpB,EAAA,MAAM,UAAA,kBAAY,qCAAA,CAAA,EAAA,GAAM;AACtB,IAAA,uBACE,6BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,kBAAA,8BAAA,uBAAC,EAAA,EAAO,SAAA,EAAW,CAAA,QAAA,EAAW,SAAS,CAAA,CAAA;AACoB,sBAAA;AACjB,sBAAA;AAE5C,IAAA;AAPc,EAAA;AAad,EAAA;AACgB,oBAAA;AAAA;AAIP,MAAA;AAAU,QAAA;AACL,QAAA;AAGE,MAAA;AAGZ,IAAA;AAAC,MAAA;AAAA,MAAA;AACsD,QAAA;AAC0C,QAAA;AAC7D,QAAA;AAG/B,QAAA;AAAU,UAAA;AACL,UAAA;AACR,QAAA;AAAA,MAAA;AAOF,IAAA;AAGuB,oBAAA;AAC7B,EAAA;AAEJ;AA9DgB;ADyCsI;AACA;AEhDlJ;AAJiE;AAC3B,EAAA;AAIpC,EAAA;AAAAA,oBAAAA;AAAC,MAAA;AAAA,MAAA;AAEgE,QAAA;AAC7B,QAAA;AAEyB,QAAA;AAAA,MAAA;AAJvC,MAAA;AAKtB,IAAA;AAGa,oBAAA;AAEN,MAAA;AAAA,MAAA;AAEwD,QAAA;AACrB,QAAA;AAEY,QAAA;AAAA,MAAA;AAJlC,MAAA;AAOpB,IAAA;AACF,EAAA;AAEJ;AA3BgB;AF8EsI;AACA;AACA;AACA;AACA","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-AWONBQQP.js","sourcesContent":[null,"\"use client\";\n\nimport { Modules } from \"../../../../core\";\nimport { usePageUrlGenerator } from \"../../../../hooks\";\nimport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n Link,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../../../../shadcnui\";\nimport { cn } from \"../../../../utils\";\nimport { UserInterface } from \"../../data\";\n\ntype UserAvatarProps = {\n user: UserInterface;\n className?: string;\n showFull?: boolean;\n showLink?: boolean;\n};\n\nexport function UserAvatar({ user, className, showFull, showLink }: UserAvatarProps) {\n const generateUrl = usePageUrlGenerator();\n\n const getInitial = (param?: string) => {\n if (!param) return \"\";\n return param[0].toUpperCase();\n };\n\n const getInitials = (name: string) => {\n const words = name.split(\" \");\n const initials =\n words.length > 1 ? getInitial(words[0][0]) + getInitial(words[words.length - 1][0]) : getInitial(words[0][0]);\n\n return initials ?? \"\";\n };\n\n const getAvatar = () => {\n return (\n <div className=\"*:ring-border *:ring-1\">\n <Avatar className={`h-6 w-6 ${className}`}>\n <AvatarImage className=\"object-cover\" src={user?.avatar} />\n <AvatarFallback>{getInitials(user.name)}</AvatarFallback>\n </Avatar>\n </div>\n );\n };\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n {showLink === false ? (\n // If showLink is explicitly false, never show a link\n showFull ? (\n <div className={cn(`mb-2 flex w-full flex-row items-center justify-start gap-x-2 text-sm`, className)}>\n {getAvatar()}\n {user.name}\n </div>\n ) : (\n getAvatar()\n )\n ) : showFull ? (\n <Link\n href={generateUrl({ page: Modules.User, id: user.id })}\n className={cn(`mb-2 flex w-full flex-row items-center justify-start gap-x-2 text-sm`, className)}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex w-full flex-row items-center gap-x-2\">\n {getAvatar()}\n {user.name}\n </div>\n </Link>\n ) : showLink ? (\n <Link href={generateUrl({ page: Modules.User, id: user.id })} className={className}>\n {getAvatar()}\n </Link>\n ) : (\n getAvatar()\n )}\n </TooltipTrigger>\n <TooltipContent>{user.name}</TooltipContent>\n </Tooltip>\n );\n}\n","\"use client\";\n\nimport { Modules } from \"../../../../core\";\nimport { usePageUrlGenerator } from \"../../../../hooks\";\nimport { Link } from \"../../../../shadcnui\";\nimport { ContentInterface } from \"../../../content\";\nimport { UserInterface } from \"../../data\";\nimport { UserAvatar } from \"../widgets\";\n\ntype ContributorsListProps = {\n content: ContentInterface;\n};\n\nexport function ContributorsList({ content }: ContributorsListProps) {\n const generateUrl = usePageUrlGenerator();\n\n return (\n <div className=\"flex flex-row items-center\">\n <Link\n key={content.author.id}\n href={generateUrl({ page: Modules.User, id: content.author.id })}\n onClick={(e) => e.stopPropagation()}\n >\n <UserAvatar user={content.author} className=\"mr-1 h-6 w-6\" />\n </Link>\n <div className=\"flex flex-row-reverse justify-end -space-x-1 space-x-reverse\">\n {content.editors\n .filter((editor: UserInterface) => editor.id !== content.author.id)\n .map((editor: UserInterface) => (\n <Link\n key={editor.id}\n href={generateUrl({ page: Modules.User, id: editor.id })}\n onClick={(e) => e.stopPropagation()}\n >\n <UserAvatar user={editor} className=\"h-5 w-5\" />\n </Link>\n ))}\n </div>\n </div>\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-CXQOWQSY.js","../src/i18n/config.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACwBA,IAAI,QAAA,EAA6B,IAAA;AAG1B,SAAS,aAAA,CAAc,MAAA,EAA0B;AACtD,EAAA,QAAA,EAAU,MAAA;AACZ;AAFgB,qCAAA,aAAA,EAAA,eAAA,CAAA;AAKT,SAAS,aAAA,CAAA,EAA4B;AAC1C,EAAA,GAAA,CAAI,iBAAC,OAAA,2BAAS,WAAA,EAAW;AACvB,IAAA,MAAM,IAAI,KAAA,CAAM,2DAA2D,CAAA;AAAA,EAC7E;AACA,EAAA,OAAO,OAAA,CAAQ,SAAA,CAAU,CAAA;AAC3B;AALgB,qCAAA,aAAA,EAAA,eAAA,CAAA;AAOT,SAAS,mBAAA,CAAoB,SAAA,EAA2E;AAC7G,EAAA,GAAA,CAAI,iBAAC,OAAA,6BAAS,iBAAA,EAAiB;AAE7B,IAAA,OAAO,CAAC,GAAA,EAAA,GAAgB,GAAA;AAAA,EAC1B;AACA,EAAA,OAAO,OAAA,CAAQ,eAAA,CAAgB,SAAS,CAAA;AAC1C;AANgB,qCAAA,mBAAA,EAAA,qBAAA,CAAA;AAQT,SAAS,WAAA,CAAA,EAA6B;AAC3C,EAAA,GAAA,CAAI,iBAAC,OAAA,6BAAS,MAAA,EAAM;AAClB,IAAA,MAAM,IAAI,KAAA,CAAM,2DAA2D,CAAA;AAAA,EAC7E;AACA,EAAA,OAAO,OAAA,CAAQ,IAAA;AACjB;AALgB,qCAAA,WAAA,EAAA,aAAA,CAAA;AAOT,SAAS,aAAA,CAAA,EAAwB;AACtC,EAAA,GAAA,iBAAI,OAAA,6BAAS,WAAA,EAAW;AACtB,IAAA,OAAO,OAAA,CAAQ,SAAA,CAAU,CAAA;AAAA,EAC3B;AAEA,EAAA,OAAO,IAAA;AACT;AANgB,qCAAA,aAAA,EAAA,eAAA,CAAA;AAQT,SAAS,oBAAA,CAAA,EAA4B;AAC1C,EAAA,GAAA,iBAAI,OAAA,6BAAS,kBAAA,EAAkB;AAC7B,IAAA,OAAO,OAAA,CAAQ,gBAAA,CAAiB,CAAA;AAAA,EAClC;AAEA,EAAA,OAAO,KAAA,CAAA;AACT;AANgB,qCAAA,oBAAA,EAAA,sBAAA,CAAA;ADrBhB;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACF,+PAAC","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-CXQOWQSY.js","sourcesContent":[null,"import { ComponentType } from \"react\";\n\n// Types for injected hooks\nexport interface I18nRouter {\n push: (href: string) => void;\n replace: (href: string) => void;\n back: () => void;\n forward: () => void;\n refresh: () => void;\n prefetch: (href: string) => void;\n}\n\nexport type UseRouterHook = () => I18nRouter;\nexport type UseTranslationsHook = (namespace?: string) => (key: string, values?: Record<string, any>) => string;\nexport type UseLocaleHook = () => string;\n\nexport type UseDateFnsLocaleHook = () => any; // date-fns Locale type\nexport type LinkComponent = ComponentType<{ href: string; children: React.ReactNode; [key: string]: any }>;\n\nexport interface I18nConfig {\n useRouter: UseRouterHook;\n useTranslations: UseTranslationsHook;\n useLocale?: UseLocaleHook;\n useDateFnsLocale?: UseDateFnsLocaleHook;\n Link: LinkComponent;\n}\n\n// Private storage\nlet _config: I18nConfig | null = null;\n\n// Configuration function (called by app at startup)\nexport function configureI18n(config: I18nConfig): void {\n _config = config;\n}\n\n// Hooks for library components to use\nexport function useI18nRouter(): I18nRouter {\n if (!_config?.useRouter) {\n throw new Error(\"i18n not configured. Call configureI18n() at app startup.\");\n }\n return _config.useRouter();\n}\n\nexport function useI18nTranslations(namespace?: string): (key: string, values?: Record<string, any>) => string {\n if (!_config?.useTranslations) {\n // Fallback: return key as-is (safe for server/client)\n return (key: string) => key;\n }\n return _config.useTranslations(namespace);\n}\n\nexport function getI18nLink(): LinkComponent {\n if (!_config?.Link) {\n throw new Error(\"i18n not configured. Call configureI18n() at app startup.\");\n }\n return _config.Link;\n}\n\nexport function useI18nLocale(): string {\n if (_config?.useLocale) {\n return _config.useLocale();\n }\n // Fallback to English (safe for server/client)\n return \"en\";\n}\n\nexport function useI18nDateFnsLocale(): any {\n if (_config?.useDateFnsLocale) {\n return _config.useDateFnsLocale();\n }\n // Fallback to undefined (Calendar will use default)\n return undefined;\n}\n"]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=chunk-DKKMWBP4.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,48 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _class;
2
-
3
- var _chunk7QVYU63Ejs = require('./chunk-7QVYU63E.js');
4
-
5
- // src/core/registry/DataClassRegistry.ts
6
- var DataClassRegistry = (_class = class {
7
- static {
8
- _chunk7QVYU63Ejs.__name.call(void 0, this, "DataClassRegistry");
9
- }
10
- static __initStatic() {this._map = /* @__PURE__ */ new Map()}
11
- static registerObjectClass(key, classConstructor) {
12
- const classKey = key.name;
13
- if (!this._map.has(classKey)) {
14
- this._map.set(classKey, classConstructor);
15
- }
16
- }
17
- static get(classKey) {
18
- const response = this._map.get(classKey.name);
19
- if (!response) {
20
- throw new Error(`Class not registered for key: ${typeof classKey === "string" ? classKey : classKey.name}`);
21
- }
22
- return response;
23
- }
24
- /**
25
- * Bootstrap the registry with all modules.
26
- * This is a convenience method for apps to register all their modules at once.
27
- *
28
- * @param modules - An object with module definitions (like the app's Modules class)
29
- */
30
- static bootstrap(modules) {
31
- Object.values(modules).forEach((module) => {
32
- if (module && module.model) {
33
- this.registerObjectClass(module, module.model);
34
- }
35
- });
36
- }
37
- /**
38
- * Clear all registered classes. Useful for testing.
39
- */
40
- static clear() {
41
- this._map.clear();
42
- }
43
- }, _class.__initStatic(), _class);
44
-
45
-
46
-
47
- exports.DataClassRegistry = DataClassRegistry;
48
- //# sourceMappingURL=chunk-DO2HLAZO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-DO2HLAZO.js","../src/core/registry/DataClassRegistry.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACDO,IAAM,kBAAA,YAAN,MAAwB;AAAA,EAH/B,OAG+B;AAAA,IAAA,qCAAA,IAAA,EAAA,mBAAA,CAAA;AAAA,EAAA;AAAA,EAC7B,4BAAe,KAAA,kBAAO,IAAI,GAAA,CAA0C,EAAA;AAAA,EAEpE,OAAc,mBAAA,CACZ,GAAA,EACA,gBAAA,EACM;AACN,IAAA,MAAM,SAAA,EAAW,GAAA,CAAI,IAAA;AACrB,IAAA,GAAA,CAAI,CAAC,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,EAAG;AAC5B,MAAA,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,gBAAgB,CAAA;AAAA,IAC1C;AAAA,EACF;AAAA,EAEA,OAAc,GAAA,CAAI,QAAA,EAEhB;AACA,IAAA,MAAM,SAAA,EAAW,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,IAAI,CAAA;AAC5C,IAAA,GAAA,CAAI,CAAC,QAAA,EAAU;AACb,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,OAAO,SAAA,IAAa,SAAA,EAAW,SAAA,EAAW,QAAA,CAAS,IAAI,CAAA,CAAA;AAC1G,IAAA;AAEO,IAAA;AACT,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQoF,EAAA;AACvC,IAAA;AACb,MAAA;AACmB,QAAA;AAC/C,MAAA;AACD,IAAA;AACH,EAAA;AAAA;AAAA;AAAA;AAK4B,EAAA;AACV,IAAA;AAClB,EAAA;AACF;ADJ+G;AACA;AACA;AACA","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-DO2HLAZO.js","sourcesContent":[null,"import { ApiDataInterface } from \"../interfaces/ApiDataInterface\";\nimport { ApiRequestDataTypeInterface } from \"../interfaces/ApiRequestDataTypeInterface\";\n\nexport class DataClassRegistry {\n private static _map = new Map<string, { new (): ApiDataInterface }>();\n\n public static registerObjectClass(\n key: ApiRequestDataTypeInterface,\n classConstructor: { new (): ApiDataInterface },\n ): void {\n const classKey = key.name;\n if (!this._map.has(classKey)) {\n this._map.set(classKey, classConstructor);\n }\n }\n\n public static get(classKey: ApiRequestDataTypeInterface): {\n new (): ApiDataInterface;\n } {\n const response = this._map.get(classKey.name);\n if (!response) {\n throw new Error(`Class not registered for key: ${typeof classKey === \"string\" ? classKey : classKey.name}`);\n }\n\n return response;\n }\n\n /**\n * Bootstrap the registry with all modules.\n * This is a convenience method for apps to register all their modules at once.\n *\n * @param modules - An object with module definitions (like the app's Modules class)\n */\n public static bootstrap(modules: Record<string, ApiRequestDataTypeInterface>): void {\n Object.values(modules).forEach((module) => {\n if (module && module.model) {\n this.registerObjectClass(module, module.model);\n }\n });\n }\n\n /**\n * Clear all registered classes. Useful for testing.\n */\n public static clear(): void {\n this._map.clear();\n }\n}\n\n// Export alias for backward compatibility\nexport { DataClassRegistry as DataClass };\n"]}
@@ -1,17 +0,0 @@
1
- import {
2
- __name
3
- } from "./chunk-PAWJFY3S.mjs";
4
-
5
- // src/components/errors/errorToast.ts
6
- import { toast } from "sonner";
7
- function errorToast(params) {
8
- toast.error(params?.title ?? "Error", {
9
- description: params.error instanceof Error ? params.error.message : String(params.error)
10
- });
11
- }
12
- __name(errorToast, "errorToast");
13
-
14
- export {
15
- errorToast
16
- };
17
- //# sourceMappingURL=chunk-DZXDB3K2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/errors/errorToast.ts"],"sourcesContent":["// import { toast } from \"@/hooks/use-toast\";\n\nimport { toast } from \"sonner\";\n\nexport function errorToast(params: { title?: string; error: any }) {\n toast.error(params?.title ?? \"Error\", {\n description: params.error instanceof Error ? params.error.message : String(params.error),\n });\n}\n"],"mappings":";;;;;AAEA,SAAS,aAAa;AAEf,SAAS,WAAW,QAAwC;AACjE,QAAM,MAAM,QAAQ,SAAS,SAAS;AAAA,IACpC,aAAa,OAAO,iBAAiB,QAAQ,OAAO,MAAM,UAAU,OAAO,OAAO,KAAK;AAAA,EACzF,CAAC;AACH;AAJgB;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/unified/JsonApiRequest.ts"],"sourcesContent":["import { ApiData } from \"../core/interfaces/ApiData\";\nimport { ApiRequestDataTypeInterface } from \"../core/interfaces/ApiRequestDataTypeInterface\";\nimport { ApiResponseInterface } from \"../core/interfaces/ApiResponseInterface\";\nimport { JsonApiDataFactory } from \"../core/factories/JsonApiDataFactory\";\nimport { translateResponse } from \"../core/utils/translateResponse\";\n\n// Type definitions for dynamically imported functions (avoiding typeof import to prevent bundling)\ntype DirectFetchFn = (params: {\n method: string;\n url: string;\n token?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n companyId?: string;\n language: string;\n additionalHeaders?: Record<string, string>;\n}) => Promise<ApiData>;\n\ntype ServerRequestFn = (params: {\n method: string;\n url: string;\n token?: string;\n cache?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n companyId?: string;\n language: string;\n additionalHeaders?: Record<string, string>;\n}) => Promise<ApiData>;\n\ntype GetTokenFn = () => Promise<string | undefined>;\n\n// These will be dynamically imported based on environment\nlet _directFetch: DirectFetchFn;\nlet _serverRequest: ServerRequestFn;\nlet _getClientToken: GetTokenFn;\nlet _getServerToken: GetTokenFn;\n\n// Config storage for non-React contexts\nlet _staticConfig: {\n apiUrl: string;\n bootstrapper?: () => void;\n additionalHeaders?: Record<string, string>;\n} | null = null;\n\n/**\n * Configure the JSON:API client for non-React contexts (e.g., server components).\n * For React contexts, use JsonApiProvider instead.\n */\nexport function configureJsonApi(config: {\n apiUrl: string;\n bootstrapper?: () => void;\n additionalHeaders?: Record<string, string>;\n}): void {\n _staticConfig = config;\n // Call bootstrapper immediately to register all modules\n if (config.bootstrapper) {\n config.bootstrapper();\n }\n}\n\nasync function getToken(): Promise<string | undefined> {\n if (typeof window === \"undefined\") {\n // Server-side\n if (!_getServerToken) {\n const serverModule = await import(\"../server/token\");\n _getServerToken = serverModule.getServerToken;\n }\n return _getServerToken();\n } else {\n // Client-side\n if (!_getClientToken) {\n const clientModule = await import(\"../client/token\");\n _getClientToken = clientModule.getClientToken;\n }\n return _getClientToken();\n }\n}\n\nasync function makeRequest(params: {\n method: string;\n url: string;\n token?: string;\n cache?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n companyId?: string;\n language: string;\n additionalHeaders?: Record<string, string>;\n}): Promise<ApiData> {\n if (typeof window !== \"undefined\") {\n // Client-side: use direct fetch\n if (!_directFetch) {\n const clientModule = await import(\"../client/request\");\n _directFetch = clientModule.directFetch;\n }\n return _directFetch({\n method: params.method,\n url: params.url,\n token: params.token,\n body: params.body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: params.additionalHeaders,\n });\n } else {\n // Server-side: use server request with caching\n if (!_serverRequest) {\n const serverModule = await import(\"../server/request\");\n _serverRequest = serverModule.serverRequest;\n }\n return _serverRequest({\n method: params.method,\n url: params.url,\n token: params.token,\n cache: params.cache,\n body: params.body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: params.additionalHeaders,\n });\n }\n}\n\nfunction getApiUrl(): string {\n if (_staticConfig?.apiUrl) {\n return _staticConfig.apiUrl;\n }\n // Fallback to environment variable\n const envUrl = process.env.NEXT_PUBLIC_API_URL;\n if (!envUrl) {\n throw new Error(\"API URL not configured. Use configureJsonApi() or set NEXT_PUBLIC_API_URL environment variable.\");\n }\n return envUrl;\n}\n\nfunction runBootstrapper(): void {\n if (_staticConfig?.bootstrapper) {\n _staticConfig.bootstrapper();\n }\n}\n\nfunction buildUrl(endpoint: string): string {\n const apiUrl = getApiUrl();\n return endpoint.startsWith(\"http\") ? endpoint : `${apiUrl}${endpoint}`;\n}\n\nexport async function JsonApiGet(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n language: string;\n}): Promise<ApiResponseInterface> {\n runBootstrapper();\n const token = await getToken();\n\n const apiResponse = await makeRequest({\n method: \"GET\",\n url: buildUrl(params.endpoint),\n token,\n cache: params.classKey.cache,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _staticConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n paginationHandler: async (endpoint: string) =>\n JsonApiGet({\n classKey: params.classKey,\n endpoint,\n companyId: params.companyId,\n language: params.language,\n }),\n });\n}\n\nexport async function JsonApiPost(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n body?: any;\n overridesJsonApiCreation?: boolean;\n files?: { [key: string]: File | Blob } | File | Blob;\n language: string;\n responseType?: ApiRequestDataTypeInterface;\n}): Promise<ApiResponseInterface> {\n runBootstrapper();\n const token = await getToken();\n\n let body = params.body;\n if (!body) {\n body = {};\n } else if (params.overridesJsonApiCreation !== true) {\n body = JsonApiDataFactory.create(params.classKey, body);\n }\n\n const apiResponse = await makeRequest({\n method: \"POST\",\n url: buildUrl(params.endpoint),\n token,\n body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _staticConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n\nexport async function JsonApiPut(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n language: string;\n responseType?: ApiRequestDataTypeInterface;\n}): Promise<ApiResponseInterface> {\n runBootstrapper();\n const token = await getToken();\n\n let body = params.body;\n if (!body) {\n body = {};\n } else {\n body = JsonApiDataFactory.create(params.classKey, body);\n }\n\n const apiResponse = await makeRequest({\n method: \"PUT\",\n url: buildUrl(params.endpoint),\n token,\n body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _staticConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n\nexport async function JsonApiPatch(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n body?: any;\n files?: { [key: string]: File | Blob } | File | Blob;\n overridesJsonApiCreation?: boolean;\n responseType?: ApiRequestDataTypeInterface;\n language: string;\n}): Promise<ApiResponseInterface> {\n runBootstrapper();\n const token = await getToken();\n\n let body = params.body;\n if (!body) {\n body = {};\n } else if (params.overridesJsonApiCreation !== true) {\n body = JsonApiDataFactory.create(params.classKey, body);\n }\n\n const apiResponse = await makeRequest({\n method: \"PATCH\",\n url: buildUrl(params.endpoint),\n token,\n body,\n files: params.files,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _staticConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n\nexport async function JsonApiDelete(params: {\n classKey: ApiRequestDataTypeInterface;\n endpoint: string;\n companyId?: string;\n language: string;\n responseType?: ApiRequestDataTypeInterface;\n}): Promise<ApiResponseInterface> {\n runBootstrapper();\n const token = await getToken();\n\n const apiResponse = await makeRequest({\n method: \"DELETE\",\n url: buildUrl(params.endpoint),\n token,\n companyId: params.companyId,\n language: params.language,\n additionalHeaders: _staticConfig?.additionalHeaders,\n });\n\n return translateResponse({\n classKey: params.responseType ?? params.classKey,\n apiResponse,\n companyId: params.companyId,\n language: params.language,\n });\n}\n"],"mappings":"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","names":[]}