@timardex/cluemart-shared 1.7.0 → 1.7.1

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 (145) hide show
  1. package/dist/ad-BUYzE6zx.d.ts +181 -0
  2. package/dist/ad-BhLoEul3.d.mts +181 -0
  3. package/dist/affiliate-BbtjeUP4.d.mts +73 -0
  4. package/dist/affiliate-C51nzKsw.d.ts +73 -0
  5. package/dist/apollo/index.cjs +1383 -0
  6. package/dist/apollo/index.cjs.map +1 -0
  7. package/dist/apollo/index.d.mts +323 -0
  8. package/dist/apollo/index.d.ts +323 -0
  9. package/dist/apollo/index.mjs +1295 -0
  10. package/dist/apollo/index.mjs.map +1 -0
  11. package/dist/auth/index.cjs +1727 -0
  12. package/dist/auth/index.cjs.map +1 -0
  13. package/dist/auth/index.d.mts +166 -0
  14. package/dist/auth/index.d.ts +166 -0
  15. package/dist/auth/index.mjs +380 -0
  16. package/dist/auth/index.mjs.map +1 -0
  17. package/dist/chunk-32MKHJTX.mjs +1207 -0
  18. package/dist/chunk-32MKHJTX.mjs.map +1 -0
  19. package/dist/{chunk-RKIRWZCH.mjs → chunk-AYO3E4DM.mjs} +39 -183
  20. package/dist/chunk-AYO3E4DM.mjs.map +1 -0
  21. package/dist/{chunk-ZZJSCYJK.mjs → chunk-BIJ5NDXW.mjs} +46 -42
  22. package/dist/chunk-BIJ5NDXW.mjs.map +1 -0
  23. package/dist/chunk-DQ7ZHIXW.mjs +26 -0
  24. package/dist/chunk-DQ7ZHIXW.mjs.map +1 -0
  25. package/dist/{chunk-MVQ3CFQR.mjs → chunk-ILILH7E2.mjs} +12 -23
  26. package/dist/chunk-ILILH7E2.mjs.map +1 -0
  27. package/dist/{chunk-TAECMXM4.mjs → chunk-LBEJECG3.mjs} +249 -219
  28. package/dist/{chunk-TAECMXM4.mjs.map → chunk-LBEJECG3.mjs.map} +1 -1
  29. package/dist/{chunk-HZMP7GXC.mjs → chunk-R6PCFOYO.mjs} +949 -2629
  30. package/dist/chunk-R6PCFOYO.mjs.map +1 -0
  31. package/dist/chunk-RAYUJODN.mjs +45 -0
  32. package/dist/chunk-RAYUJODN.mjs.map +1 -0
  33. package/dist/chunk-SD42WIMV.mjs +297 -0
  34. package/dist/chunk-SD42WIMV.mjs.map +1 -0
  35. package/dist/chunk-VPANTTZI.mjs +262 -0
  36. package/dist/chunk-VPANTTZI.mjs.map +1 -0
  37. package/dist/{chunk-KZTOISPA.mjs → chunk-X3OLM35T.mjs} +14 -8
  38. package/dist/chunk-X3OLM35T.mjs.map +1 -0
  39. package/dist/{contactUs-H7799pWe.d.ts → contactUs--NoohZBu.d.ts} +1 -1
  40. package/dist/{contactUs-DGrDzJaM.d.mts → contactUs-CBWzefUS.d.mts} +1 -1
  41. package/dist/enums/index.cjs +13 -7
  42. package/dist/enums/index.cjs.map +1 -1
  43. package/dist/enums/index.d.mts +15 -9
  44. package/dist/enums/index.d.ts +15 -9
  45. package/dist/enums/index.mjs +1 -1
  46. package/dist/formFields/index.cjs +136 -73
  47. package/dist/formFields/index.cjs.map +1 -1
  48. package/dist/formFields/index.d.mts +3 -2
  49. package/dist/formFields/index.d.ts +3 -2
  50. package/dist/formFields/index.mjs +9 -4
  51. package/dist/{global-fKbMmluy.d.ts → global-CUYYxpy2.d.ts} +12 -11
  52. package/dist/{global-BUUfmCo7.d.mts → global-DePDtOFt.d.mts} +12 -11
  53. package/dist/graphql/index.cjs +694 -1251
  54. package/dist/graphql/index.cjs.map +1 -1
  55. package/dist/graphql/index.d.mts +423 -173
  56. package/dist/graphql/index.d.ts +423 -173
  57. package/dist/graphql/index.mjs +33 -21
  58. package/dist/hooks/index.cjs +937 -307
  59. package/dist/hooks/index.cjs.map +1 -1
  60. package/dist/hooks/index.d.mts +10 -4
  61. package/dist/hooks/index.d.ts +10 -4
  62. package/dist/hooks/index.mjs +170 -58
  63. package/dist/hooks/index.mjs.map +1 -1
  64. package/dist/images/apple-maps-icon.webp.d.ts +8 -1
  65. package/dist/images/banner-horizontal.webp.d.ts +8 -1
  66. package/dist/images/banner-vertical.webp.d.ts +8 -1
  67. package/dist/images/cluiTui.webp.d.ts +8 -1
  68. package/dist/images/corporate.webp.d.ts +8 -1
  69. package/dist/images/facebook.webp.d.ts +8 -1
  70. package/dist/images/gazebo-top.webp.d.ts +8 -1
  71. package/dist/images/google-maps-icon.webp.d.ts +8 -1
  72. package/dist/images/googleMaps-logo-dark.webp.d.ts +8 -1
  73. package/dist/images/googleMaps-logo-light.webp.d.ts +8 -1
  74. package/dist/images/instagram.webp.d.ts +8 -1
  75. package/dist/images/logo-atr.webp.d.ts +8 -1
  76. package/dist/images/logo-dark.webp.d.ts +8 -1
  77. package/dist/images/logo.webp.d.ts +8 -1
  78. package/dist/images/meet.webp.d.ts +8 -1
  79. package/dist/images/mini-market1.webp.d.ts +8 -1
  80. package/dist/images/mini-market2.webp.d.ts +8 -1
  81. package/dist/images/mini-market3.webp.d.ts +8 -1
  82. package/dist/images/mini-market4.webp.d.ts +8 -1
  83. package/dist/images/mini-market5.webp.d.ts +8 -1
  84. package/dist/images/poll.webp.d.ts +8 -1
  85. package/dist/images/poster1.webp.d.ts +8 -1
  86. package/dist/images/poster2.webp.d.ts +8 -1
  87. package/dist/images/poster3.webp.d.ts +8 -1
  88. package/dist/images/poster4.webp.d.ts +8 -1
  89. package/dist/images/private.webp.d.ts +8 -1
  90. package/dist/images/qr-code.webp.d.ts +8 -1
  91. package/dist/images/school.webp.d.ts +8 -1
  92. package/dist/images/sima.webp.d.ts +8 -1
  93. package/dist/images/store-android.webp.d.ts +8 -1
  94. package/dist/images/store-ios.webp.d.ts +8 -1
  95. package/dist/images/tablas.webp.d.ts +8 -1
  96. package/dist/images/telefonos.webp.d.ts +8 -1
  97. package/dist/images/tiktok.webp.d.ts +8 -1
  98. package/dist/images/tip.webp.d.ts +8 -1
  99. package/dist/images/ugralos.webp.d.ts +8 -1
  100. package/dist/images/waze-maps-icon.webp.d.ts +8 -1
  101. package/dist/images/website.webp.d.ts +8 -1
  102. package/dist/images/youtube.webp.d.ts +8 -1
  103. package/dist/index.cjs +1655 -1705
  104. package/dist/index.cjs.map +1 -1
  105. package/dist/index.d.mts +654 -240
  106. package/dist/index.d.ts +654 -240
  107. package/dist/index.mjs +1617 -1704
  108. package/dist/index.mjs.map +1 -1
  109. package/dist/map/index.cjs +14 -9
  110. package/dist/map/index.cjs.map +1 -1
  111. package/dist/map/index.d.mts +16 -13
  112. package/dist/map/index.d.ts +16 -13
  113. package/dist/map/index.mjs +14 -9
  114. package/dist/map/index.mjs.map +1 -1
  115. package/dist/{resourceActivities-BL_12IAo.d.ts → resourceActivities-CMUcn2P7.d.ts} +9 -4
  116. package/dist/{resourceActivities-zczOntNk.d.mts → resourceActivities-CwbJFGIp.d.mts} +9 -4
  117. package/dist/sharing/index.cjs +39 -1252
  118. package/dist/sharing/index.cjs.map +1 -1
  119. package/dist/sharing/index.d.mts +17 -5
  120. package/dist/sharing/index.d.ts +17 -5
  121. package/dist/sharing/index.mjs +34 -30
  122. package/dist/subscription-BU8GvH2K.d.ts +12 -0
  123. package/dist/subscription-bmAdrnfi.d.mts +12 -0
  124. package/dist/types/index.cjs +15 -2
  125. package/dist/types/index.cjs.map +1 -1
  126. package/dist/types/index.d.mts +10 -23
  127. package/dist/types/index.d.ts +10 -23
  128. package/dist/types/index.mjs +9 -5
  129. package/dist/user-D47MLFyH.d.ts +134 -0
  130. package/dist/user-DE8edl3u.d.mts +134 -0
  131. package/dist/utils/index.cjs +355 -136
  132. package/dist/utils/index.cjs.map +1 -1
  133. package/dist/utils/index.d.mts +87 -35
  134. package/dist/utils/index.d.ts +87 -35
  135. package/dist/utils/index.mjs +42 -15
  136. package/package.json +31 -10
  137. package/dist/ad-CVkVX_z5.d.ts +0 -296
  138. package/dist/ad-DA9ECAhK.d.mts +0 -296
  139. package/dist/affiliate-1RtkLnLP.d.ts +0 -35
  140. package/dist/affiliate-Cos2Syz5.d.mts +0 -35
  141. package/dist/chunk-HZMP7GXC.mjs.map +0 -1
  142. package/dist/chunk-KZTOISPA.mjs.map +0 -1
  143. package/dist/chunk-MVQ3CFQR.mjs.map +0 -1
  144. package/dist/chunk-RKIRWZCH.mjs.map +0 -1
  145. package/dist/chunk-ZZJSCYJK.mjs.map +0 -1
@@ -0,0 +1,1727 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/auth/index.ts
22
+ var auth_exports = {};
23
+ __export(auth_exports, {
24
+ ADMIN_APP_ROLES: () => ADMIN_APP_ROLES,
25
+ ADMIN_DASHBOARD_CONTEXTS: () => ADMIN_DASHBOARD_CONTEXTS,
26
+ DEFAULT_LIMITS: () => DEFAULT_LIMITS,
27
+ NO_LICENCE_FLAGS: () => NO_LICENCE_FLAGS,
28
+ PERMISSIONS: () => PERMISSIONS,
29
+ ROLE_PERMISSIONS: () => ROLE_PERMISSIONS,
30
+ UserProvider: () => UserProvider,
31
+ WILDCARD_PERMISSION: () => WILDCARD_PERMISSION,
32
+ canAccessAdminApp: () => canAccessAdminApp,
33
+ canAccessAdminPath: () => canAccessAdminPath,
34
+ createAuthManager: () => createAuthManager,
35
+ getDefaultAdminHome: () => getDefaultAdminHome,
36
+ getLicenceFlagsByRole: () => getLicenceFlagsByRole,
37
+ getPermissionsForRoles: () => getPermissionsForRoles,
38
+ getUsableAdminContexts: () => getUsableAdminContexts,
39
+ hasAllPermissions: () => hasAllPermissions,
40
+ hasAnyPermission: () => hasAnyPermission,
41
+ hasAnyRole: () => hasAnyRole,
42
+ hasLicence: () => hasLicence,
43
+ hasPermission: () => hasPermission,
44
+ hasRole: () => hasRole,
45
+ hasUserLicenceType: () => hasUserLicenceType,
46
+ isLicencedResourceType: () => isLicencedResourceType,
47
+ isProfileBadgeLicence: () => isProfileBadgeLicence,
48
+ permissionListIncludes: () => permissionListIncludes,
49
+ resolveAdminContextFromPath: () => resolveAdminContextFromPath,
50
+ useAuthCore: () => useAuthCore,
51
+ useAuthUser: () => useAuthUser
52
+ });
53
+ module.exports = __toCommonJS(auth_exports);
54
+
55
+ // src/auth/createAuthManager.ts
56
+ function createAuthManager() {
57
+ let logoutFn = null;
58
+ let userRefetchFn = null;
59
+ let logoutPromise = null;
60
+ return {
61
+ handleRefetchUser: async () => {
62
+ if (userRefetchFn) {
63
+ await userRefetchFn();
64
+ } else {
65
+ console.warn("\u274C User refetch function not set!");
66
+ }
67
+ },
68
+ logout() {
69
+ if (logoutPromise !== null) return logoutPromise;
70
+ if (logoutFn === null) {
71
+ console.warn("\u274C Logout function not set!");
72
+ return Promise.resolve();
73
+ }
74
+ logoutPromise = logoutFn().finally(() => {
75
+ logoutPromise = null;
76
+ });
77
+ return logoutPromise;
78
+ },
79
+ setLogout(fn) {
80
+ logoutFn = fn;
81
+ },
82
+ setUserRefetch(fn) {
83
+ userRefetchFn = fn;
84
+ }
85
+ };
86
+ }
87
+
88
+ // src/types/subscription.ts
89
+ var TIERS_BY_PRIORITY = ["pro_plus", "pro", "standard"];
90
+ var TIER_FROM_LICENCE = {
91
+ ["pro_event" /* PRO_EVENT */]: "pro",
92
+ ["pro_plus_event" /* PRO_PLUS_EVENT */]: "pro_plus",
93
+ ["pro_plus_vendor" /* PRO_PLUS_VENDOR */]: "pro_plus",
94
+ ["pro_vendor" /* PRO_VENDOR */]: "pro",
95
+ ["standard_event" /* STANDARD_EVENT */]: "standard",
96
+ ["standard_partner" /* STANDARD_PARTNER */]: "standard",
97
+ ["standard_vendor" /* STANDARD_VENDOR */]: "standard",
98
+ ["standard_affiliate" /* STANDARD_AFFILIATE */]: "standard",
99
+ ["standard_school" /* STANDARD_SCHOOL */]: "standard"
100
+ };
101
+
102
+ // src/auth/licenceUtils.ts
103
+ function isLicencedResourceType(resourceType) {
104
+ return resourceType !== "affiliate" /* AFFILIATE */ && resourceType !== "school" /* SCHOOL */;
105
+ }
106
+ function isProfileBadgeLicence(licenceType) {
107
+ return licenceType !== "standard_affiliate" /* STANDARD_AFFILIATE */ && licenceType !== "standard_school" /* STANDARD_SCHOOL */;
108
+ }
109
+ var hasUserLicenceType = (authUser, licenceType) => authUser?.licences?.some((licence) => licence.licenceType === licenceType) ?? false;
110
+ var hasLicence = (authUser, licenceType) => {
111
+ const directLicence = authUser?.licences?.some(
112
+ (licence) => licence.licenceType?.includes(licenceType)
113
+ ) ?? false;
114
+ return {
115
+ directLicence
116
+ };
117
+ };
118
+ var DEFAULT_LIMITS = {
119
+ // 1 means calendar/productMenu is enabled, 0 means disabled
120
+ availability: { pro: 1, pro_plus: 1, standard: 0 },
121
+ calendar: { pro: 1, pro_plus: 1, standard: 0 },
122
+ images: { pro: 12, pro_plus: 12, standard: 6 },
123
+ posters: { pro: 5, pro_plus: 5, standard: 5 },
124
+ productsList: { pro: 1, pro_plus: 1, standard: 0 },
125
+ relationShare: { pro: 1, pro_plus: 1, standard: 0 },
126
+ statistics: { pro: 1, pro_plus: 1, standard: 0 }
127
+ };
128
+ var NO_LICENCE_FLAGS = {
129
+ event: {
130
+ pro_plus: false,
131
+ // eslint-disable-next-line sort-keys
132
+ pro: false,
133
+ standard: false
134
+ },
135
+ partner: {
136
+ pro_plus: false,
137
+ // eslint-disable-next-line sort-keys
138
+ pro: false,
139
+ standard: false
140
+ },
141
+ vendor: {
142
+ pro_plus: false,
143
+ // eslint-disable-next-line sort-keys
144
+ pro: false,
145
+ standard: false
146
+ }
147
+ };
148
+ function getLicenceFlagsByRole(licences) {
149
+ const normalized = licences?.map((l) => l.toLowerCase()) ?? [];
150
+ const hasAnyLicence = normalized.length > 0;
151
+ function resolve(role) {
152
+ const result = {
153
+ pro_plus: false,
154
+ // eslint-disable-next-line sort-keys
155
+ pro: false,
156
+ standard: false
157
+ };
158
+ for (const tier of TIERS_BY_PRIORITY) {
159
+ if (normalized.some((l) => l.startsWith(`${tier}_${role}`))) {
160
+ result[tier] = true;
161
+ break;
162
+ }
163
+ }
164
+ if (!hasAnyLicence) {
165
+ result.pro = true;
166
+ }
167
+ return result;
168
+ }
169
+ return {
170
+ event: resolve("event" /* EVENT */),
171
+ partner: resolve("partner" /* PARTNER */),
172
+ vendor: resolve("vendor" /* VENDOR */)
173
+ };
174
+ }
175
+
176
+ // src/auth/permissions/permissions.ts
177
+ var PERMISSIONS = [
178
+ "*",
179
+ // Dashboards
180
+ "dashboard.admin",
181
+ "dashboard.affiliate",
182
+ "dashboard.customer",
183
+ "dashboard.event",
184
+ "dashboard.partner",
185
+ "dashboard.school",
186
+ "dashboard.vendor",
187
+ // Admin: users
188
+ "users.delete",
189
+ "users.read",
190
+ "users.update",
191
+ // Admin: events
192
+ "events.create",
193
+ "events.delete",
194
+ "events.read",
195
+ "events.update",
196
+ // Admin: vendors
197
+ "vendors.create",
198
+ "vendors.delete",
199
+ "vendors.read",
200
+ "vendors.update",
201
+ // Admin: partners
202
+ "partners.create",
203
+ "partners.delete",
204
+ "partners.read",
205
+ "partners.update",
206
+ // Admin: schools
207
+ "schools.create",
208
+ "schools.delete",
209
+ "schools.read",
210
+ "schools.update",
211
+ // Admin: affiliates
212
+ "affiliates.create",
213
+ "affiliates.delete",
214
+ "affiliates.read",
215
+ "affiliates.update",
216
+ // Admin: ads / posts / settings
217
+ "ads.create",
218
+ "ads.delete",
219
+ "ads.read",
220
+ "ads.update",
221
+ "posts.create",
222
+ "posts.delete",
223
+ "posts.read",
224
+ "posts.update",
225
+ "settings.read",
226
+ "settings.update",
227
+ // Product: own-resource management
228
+ "affiliates.manage_own",
229
+ "events.manage_own",
230
+ "partners.manage_own",
231
+ "schools.manage_own",
232
+ "vendors.manage_own"
233
+ ];
234
+ var WILDCARD_PERMISSION = "*";
235
+
236
+ // src/auth/permissions/rolePermissions.ts
237
+ var ADMIN_PERMISSIONS = [
238
+ "dashboard.admin",
239
+ "events.read",
240
+ "events.create",
241
+ "events.update",
242
+ "events.delete",
243
+ "vendors.read",
244
+ "vendors.create",
245
+ "vendors.update",
246
+ "vendors.delete",
247
+ "partners.read",
248
+ "partners.create",
249
+ "partners.update",
250
+ "partners.delete",
251
+ "schools.read",
252
+ "schools.create",
253
+ "schools.update",
254
+ "schools.delete",
255
+ "affiliates.read",
256
+ "affiliates.create",
257
+ "affiliates.update",
258
+ "affiliates.delete",
259
+ "ads.read",
260
+ "ads.create",
261
+ "ads.update",
262
+ "ads.delete",
263
+ "posts.read",
264
+ "posts.create",
265
+ "posts.update",
266
+ "posts.delete"
267
+ ];
268
+ var ROLE_PERMISSIONS = {
269
+ ["super_admin" /* SUPER_ADMIN */]: ["*"],
270
+ ["admin" /* ADMIN */]: ADMIN_PERMISSIONS,
271
+ ["customer" /* CUSTOMER */]: ["dashboard.customer"],
272
+ ["event" /* EVENT */]: ["dashboard.event", "events.manage_own"],
273
+ ["vendor" /* VENDOR */]: ["dashboard.vendor", "vendors.manage_own"],
274
+ ["partner" /* PARTNER */]: ["dashboard.partner", "partners.manage_own"],
275
+ ["school" /* SCHOOL */]: ["dashboard.school", "schools.manage_own"],
276
+ ["affiliate" /* AFFILIATE */]: ["dashboard.affiliate", "affiliates.manage_own"]
277
+ };
278
+
279
+ // src/auth/permissions/helpers.ts
280
+ function normalizeRoles(roles) {
281
+ if (!roles?.length) return [];
282
+ return roles;
283
+ }
284
+ function getPermissionsForRoles(roles) {
285
+ const seen = /* @__PURE__ */ new Set();
286
+ const result = [];
287
+ for (const role of normalizeRoles(roles)) {
288
+ const perms = ROLE_PERMISSIONS[role] ?? [];
289
+ for (const perm of perms) {
290
+ if (!seen.has(perm)) {
291
+ seen.add(perm);
292
+ result.push(perm);
293
+ }
294
+ }
295
+ }
296
+ return result;
297
+ }
298
+ function permissionListIncludes(permissions, permission) {
299
+ if (!permissions?.length) return false;
300
+ const set = new Set(permissions);
301
+ if (set.has(WILDCARD_PERMISSION)) return true;
302
+ return set.has(permission);
303
+ }
304
+ function hasPermission(roles, permission) {
305
+ return permissionListIncludes(getPermissionsForRoles(roles), permission);
306
+ }
307
+ function hasAnyPermission(roles, permissions) {
308
+ if (permissions.length === 0) return false;
309
+ const granted = getPermissionsForRoles(roles);
310
+ return permissions.some((p) => permissionListIncludes(granted, p));
311
+ }
312
+ function hasAllPermissions(roles, permissions) {
313
+ if (permissions.length === 0) return true;
314
+ const granted = getPermissionsForRoles(roles);
315
+ return permissions.every((p) => permissionListIncludes(granted, p));
316
+ }
317
+ function hasRole(roles, role) {
318
+ return normalizeRoles(roles).includes(role);
319
+ }
320
+ function hasAnyRole(roles, checkRoles) {
321
+ if (checkRoles.length === 0) return false;
322
+ const set = new Set(normalizeRoles(roles));
323
+ return checkRoles.some((r) => set.has(r));
324
+ }
325
+
326
+ // src/auth/permissions/adminAppAccess.ts
327
+ var ADMIN_APP_ROLES = [
328
+ "super_admin" /* SUPER_ADMIN */,
329
+ "admin" /* ADMIN */,
330
+ "event" /* EVENT */,
331
+ "vendor" /* VENDOR */,
332
+ "partner" /* PARTNER */,
333
+ "school" /* SCHOOL */,
334
+ "affiliate" /* AFFILIATE */
335
+ ];
336
+ var ADMIN_DASHBOARD_CONTEXTS = [
337
+ {
338
+ context: "staff",
339
+ home: "/dashboard",
340
+ label: "Staff",
341
+ pathPrefixes: ["/dashboard"],
342
+ roles: ["super_admin" /* SUPER_ADMIN */, "admin" /* ADMIN */]
343
+ },
344
+ {
345
+ context: "event",
346
+ home: "/event/dashboard",
347
+ label: "Events",
348
+ pathPrefixes: ["/event"],
349
+ roles: ["event" /* EVENT */]
350
+ },
351
+ {
352
+ context: "vendor",
353
+ home: "/vendor/dashboard",
354
+ label: "Stallholders",
355
+ pathPrefixes: ["/vendor"],
356
+ roles: ["vendor" /* VENDOR */]
357
+ },
358
+ {
359
+ context: "partner",
360
+ home: "/partner/dashboard",
361
+ label: "Partners",
362
+ pathPrefixes: ["/partner"],
363
+ roles: ["partner" /* PARTNER */]
364
+ },
365
+ {
366
+ context: "school",
367
+ home: "/school/dashboard",
368
+ label: "Schools",
369
+ pathPrefixes: ["/school"],
370
+ roles: ["school" /* SCHOOL */]
371
+ },
372
+ {
373
+ context: "affiliate",
374
+ home: "/affiliate/dashboard",
375
+ label: "Affiliate",
376
+ pathPrefixes: ["/affiliate"],
377
+ roles: ["affiliate" /* AFFILIATE */]
378
+ }
379
+ ];
380
+ function canAccessAdminApp(roles) {
381
+ return hasAnyRole(roles, ADMIN_APP_ROLES);
382
+ }
383
+ function getUsableAdminContexts(roles) {
384
+ return ADMIN_DASHBOARD_CONTEXTS.filter((ctx) => hasAnyRole(roles, ctx.roles));
385
+ }
386
+ function getDefaultAdminHome(roles, preferredContext) {
387
+ const usable = getUsableAdminContexts(roles);
388
+ if (usable.length === 0) {
389
+ return "/login";
390
+ }
391
+ if (preferredContext) {
392
+ const preferred = usable.find((ctx) => ctx.context === preferredContext);
393
+ if (preferred) return preferred.home;
394
+ }
395
+ return usable[0].home;
396
+ }
397
+ function resolveAdminContextFromPath(pathname) {
398
+ for (const ctx of ADMIN_DASHBOARD_CONTEXTS) {
399
+ if (ctx.pathPrefixes.some(
400
+ (prefix) => pathname === prefix || pathname.startsWith(`${prefix}/`)
401
+ )) {
402
+ return ctx.context;
403
+ }
404
+ }
405
+ return null;
406
+ }
407
+ function canAccessAdminPath(roles, pathname) {
408
+ if (!canAccessAdminApp(roles)) return false;
409
+ const context = resolveAdminContextFromPath(pathname);
410
+ if (!context) {
411
+ return true;
412
+ }
413
+ const info = ADMIN_DASHBOARD_CONTEXTS.find((ctx) => ctx.context === context);
414
+ if (!info) return false;
415
+ return hasAnyRole(roles, info.roles);
416
+ }
417
+
418
+ // src/auth/useAuthCore.ts
419
+ var import_react = require("react");
420
+
421
+ // src/graphql/hooks/auth.ts
422
+ var import_client3 = require("@apollo/client");
423
+
424
+ // src/graphql/mutations/auth.ts
425
+ var import_client2 = require("@apollo/client");
426
+
427
+ // src/graphql/queries/global.ts
428
+ var import_client = require("@apollo/client");
429
+ var POSTER_USAGE_FIELDS_FRAGMENT = import_client.gql`
430
+ fragment PosterUsageFields on PosterUsageType {
431
+ month
432
+ count
433
+ }
434
+ `;
435
+ var SOCIAL_MEDIA_FIELDS_FRAGMENT = import_client.gql`
436
+ fragment SocialMediaFields on SocialMediaType {
437
+ name
438
+ link
439
+ }
440
+ `;
441
+ var RESOURCE_IMAGE_FIELDS_FRAGMENT = import_client.gql`
442
+ fragment ResourceImageFields on ResourceImageType {
443
+ active
444
+ source
445
+ title
446
+ }
447
+ `;
448
+ var OWNER_FIELDS_FRAGMENT = import_client.gql`
449
+ fragment OwnerFields on OwnerType {
450
+ email
451
+ userId
452
+ }
453
+ `;
454
+ var CATEGORY_FIELDS_FRAGMENT = import_client.gql`
455
+ fragment CategoryFields on CategoryType {
456
+ id
457
+ name
458
+ subcategories {
459
+ id
460
+ items {
461
+ id
462
+ name
463
+ }
464
+ name
465
+ }
466
+ }
467
+ `;
468
+ var LICENCE_FIELDS_FRAGMENT = import_client.gql`
469
+ fragment LicenceFields on UserLicenceType {
470
+ expiryDate
471
+ issuedDate
472
+ licenceType
473
+ prevLicenceType
474
+ }
475
+ `;
476
+ var TERMS_AGREEMENT_FIELDS_FRAGMENT = import_client.gql`
477
+ fragment TermsAgreementFields on TermsAgreementType {
478
+ appBuildNumber
479
+ appId
480
+ appVersion
481
+ brand
482
+ deviceName
483
+ installationId
484
+ manufacturer
485
+ modelName
486
+ osName
487
+ osVersion
488
+ termVersion
489
+ timestamp
490
+ }
491
+ `;
492
+ var DATETIME_FIELDS_FRAGMENT = import_client.gql`
493
+ fragment DateTimeFields on DateTimeType {
494
+ dateStatus
495
+ endDate
496
+ endTime
497
+ startDate
498
+ startTime
499
+ }
500
+ `;
501
+ var LOCATION_GEO_FIELDS_FRAGMENT = import_client.gql`
502
+ fragment LocationGeoFields on LocationGeoType {
503
+ coordinates
504
+ type
505
+ }
506
+ `;
507
+ var LOCATION_FIELDS_FRAGMENT = import_client.gql`
508
+ fragment LocationFields on LocationType {
509
+ city
510
+ country
511
+ fullAddress
512
+ geo {
513
+ ...LocationGeoFields
514
+ }
515
+ latitude
516
+ longitude
517
+ region
518
+ }
519
+ ${LOCATION_GEO_FIELDS_FRAGMENT}
520
+ `;
521
+ var USER_ACTIVITY_FIELDS_FRAGMENT = import_client.gql`
522
+ fragment UserActivityFields on UserActivityType {
523
+ favourites {
524
+ events
525
+ partners
526
+ vendors
527
+ }
528
+ going {
529
+ events {
530
+ resourceId
531
+ dateTime {
532
+ ...DateTimeFields
533
+ }
534
+ }
535
+ }
536
+ interested {
537
+ events {
538
+ resourceId
539
+ dateTime {
540
+ ...DateTimeFields
541
+ }
542
+ }
543
+ }
544
+ present {
545
+ events {
546
+ resourceId
547
+ dateTime {
548
+ ...DateTimeFields
549
+ }
550
+ }
551
+ }
552
+ }
553
+ ${DATETIME_FIELDS_FRAGMENT}
554
+ `;
555
+ var REDEEMED_REWARD_FIELDS_FRAGMENT = import_client.gql`
556
+ fragment RedeemedRewardFields on RedeemedRewardType {
557
+ name
558
+ pointsUsed
559
+ redeemedAt
560
+ }
561
+ `;
562
+ var STRIPE_FIELDS_FRAGMENT = import_client.gql`
563
+ fragment StripeSubscriptionFields on StripeSubscriptionType {
564
+ customerId
565
+ subscriptionId
566
+ status
567
+ currentPlan
568
+ startDate
569
+ endDate
570
+ }
571
+ `;
572
+ var USER_FIELDS_FRAGMENT = import_client.gql`
573
+ fragment UserFields on UserType {
574
+ _id
575
+ active
576
+ affiliate
577
+ avatar {
578
+ ...ResourceImageFields
579
+ }
580
+ createdAt
581
+ deletedAt
582
+ email
583
+ events
584
+ firstName
585
+ game
586
+ isTester
587
+ lastName
588
+ licences {
589
+ ...LicenceFields
590
+ }
591
+ location {
592
+ ...LocationFields
593
+ }
594
+ partner
595
+ overallPoints
596
+ platform
597
+ preferredRegion
598
+ permissions
599
+ promoCodes
600
+ roles
601
+ redeemedRewards {
602
+ ...RedeemedRewardFields
603
+ }
604
+ school
605
+ stripe {
606
+ ...StripeSubscriptionFields
607
+ }
608
+ termsAgreement {
609
+ ...TermsAgreementFields
610
+ }
611
+ userActivity {
612
+ ...UserActivityFields
613
+ }
614
+ vendor
615
+ updatedAt
616
+ }
617
+ ${RESOURCE_IMAGE_FIELDS_FRAGMENT}
618
+ ${TERMS_AGREEMENT_FIELDS_FRAGMENT}
619
+ ${USER_ACTIVITY_FIELDS_FRAGMENT}
620
+ ${LICENCE_FIELDS_FRAGMENT}
621
+ ${LOCATION_FIELDS_FRAGMENT}
622
+ ${REDEEMED_REWARD_FIELDS_FRAGMENT}
623
+ ${STRIPE_FIELDS_FRAGMENT}
624
+ `;
625
+ var STALL_TYPE_FIELDS_FRAGMENT = import_client.gql`
626
+ fragment StallTypeFields on StallTypeType {
627
+ label
628
+ price
629
+ stallCapacity
630
+ }
631
+ `;
632
+ var RELATION_DATES_FRAGMENT = import_client.gql`
633
+ fragment RelationDates on RelationDateType {
634
+ dateTime {
635
+ dateStatus
636
+ endDate
637
+ endTime
638
+ startDate
639
+ startTime
640
+ stallType {
641
+ ...StallTypeFields
642
+ }
643
+ }
644
+ lastUpdateBy {
645
+ resourceId
646
+ userEmail
647
+ }
648
+ paymentReference
649
+ status
650
+ }
651
+ ${STALL_TYPE_FIELDS_FRAGMENT}
652
+ `;
653
+ var CONTACT_DETAILS_FIELDS_FRAGMENT = import_client.gql`
654
+ fragment ContactDetailsFields on ContactDetailsType {
655
+ email
656
+ landlinePhone
657
+ mobilePhone
658
+ }
659
+ `;
660
+ var EVENT_LIST_ITEM = import_client.gql`
661
+ fragment EventListItemFields on EventListItemType {
662
+ _id
663
+ active
664
+ approvedAt
665
+ claimed
666
+ cover {
667
+ ...ResourceImageFields
668
+ }
669
+ createdAt
670
+ dateTime {
671
+ ...DateTimeFields
672
+ }
673
+ deletedAt
674
+ description
675
+ eventType
676
+ googlePlaceId
677
+ images {
678
+ ...ResourceImageFields
679
+ }
680
+ location {
681
+ ...LocationFields
682
+ }
683
+ logo {
684
+ ...ResourceImageFields
685
+ }
686
+ name
687
+ rainOrShine
688
+ rating
689
+ region
690
+ relations {
691
+ relationId
692
+ relationDates {
693
+ ...RelationDates
694
+ }
695
+ }
696
+ reviewCount
697
+ slug
698
+ updatedAt
699
+ }
700
+ ${DATETIME_FIELDS_FRAGMENT}
701
+ ${LOCATION_FIELDS_FRAGMENT}
702
+ ${RESOURCE_IMAGE_FIELDS_FRAGMENT}
703
+ ${RELATION_DATES_FRAGMENT}
704
+ `;
705
+ var RELATED_POST_FIELDS_FRAGMENT = import_client.gql`
706
+ fragment RelatedPostFields on RelatedPostType {
707
+ postActive
708
+ postId
709
+ postSlug
710
+ postType
711
+ }
712
+ `;
713
+ var SOCIAL_SHARE_RESOURCE_FIELDS_FRAGMENT = import_client.gql`
714
+ fragment SocialShareResourceFields on SocialShareResourceType {
715
+ qrCode {
716
+ ...ResourceImageFields
717
+ }
718
+ socialImage {
719
+ ...ResourceImageFields
720
+ }
721
+ }
722
+ ${RESOURCE_IMAGE_FIELDS_FRAGMENT}
723
+ `;
724
+
725
+ // src/graphql/mutations/auth.ts
726
+ var REGISTER_MUTATION = import_client2.gql`
727
+ mutation register($input: RegisterInputType!) {
728
+ register(input: $input) {
729
+ data {
730
+ refreshToken
731
+ token
732
+ user {
733
+ ...UserFields
734
+ }
735
+ }
736
+ message
737
+ }
738
+ }
739
+ ${USER_FIELDS_FRAGMENT}
740
+ `;
741
+ var LOGIN_MUTATION = import_client2.gql`
742
+ mutation login($input: LoginInputType!) {
743
+ login(input: $input) {
744
+ data {
745
+ refreshToken
746
+ token
747
+ user {
748
+ ...UserFields
749
+ }
750
+ }
751
+ message
752
+ }
753
+ }
754
+ ${USER_FIELDS_FRAGMENT}
755
+ `;
756
+ var LOGOUT_MUTATION = import_client2.gql`
757
+ mutation logout {
758
+ logout {
759
+ data
760
+ message
761
+ }
762
+ }
763
+ `;
764
+ var REFRESH_TOKEN_MUTATION = import_client2.gql`
765
+ mutation refreshToken($input: RefreshTokenInputType!) {
766
+ refreshToken(input: $input) {
767
+ data {
768
+ refreshToken
769
+ token
770
+ }
771
+ message
772
+ }
773
+ }
774
+ `;
775
+ var RESET_PASSWORD_MUTATION = import_client2.gql`
776
+ mutation resetPassword($input: ResetPasswordInputType!) {
777
+ resetPassword(input: $input) {
778
+ data
779
+ message
780
+ }
781
+ }
782
+ `;
783
+ var REQUEST_PASSWORD_RESET_MUTATION = import_client2.gql`
784
+ mutation requestPasswordReset($input: RequestPasswordResetInputType!) {
785
+ requestPasswordReset(input: $input) {
786
+ data
787
+ message
788
+ }
789
+ }
790
+ `;
791
+ var VALIDATE_VERIFICATION_TOKEN_MUTATION = import_client2.gql`
792
+ mutation validateVerificationToken(
793
+ $input: ValidateVerificationTokenInputType!
794
+ ) {
795
+ validateVerificationToken(input: $input) {
796
+ data
797
+ message
798
+ }
799
+ }
800
+ `;
801
+
802
+ // src/graphql/hooks/auth.ts
803
+ var useLogout = () => {
804
+ const [logout, { loading, error }] = (0, import_client3.useMutation)(LOGOUT_MUTATION);
805
+ return { error, loading, logout };
806
+ };
807
+
808
+ // src/graphql/hooks/user/hooksQuery.ts
809
+ var import_client8 = require("@apollo/client");
810
+
811
+ // src/graphql/queries/user.ts
812
+ var import_client7 = require("@apollo/client");
813
+
814
+ // src/graphql/queries/event.ts
815
+ var import_client4 = require("@apollo/client");
816
+ var EVENT_INFO = import_client4.gql`
817
+ fragment EventInfoFields on EventInfoType {
818
+ _id
819
+ applicationDeadlineHours
820
+ dateTime {
821
+ dateStatus
822
+ endDate
823
+ endTime
824
+ stallTypes {
825
+ ...StallTypeFields
826
+ }
827
+ startDate
828
+ startTime
829
+ }
830
+ eventId
831
+ packInTime
832
+ paymentDueHours
833
+ paymentInfo {
834
+ accountHolderName
835
+ accountNumber
836
+ link
837
+ paymentMethod
838
+ }
839
+ refundPolicy {
840
+ category
841
+ label
842
+ value
843
+ }
844
+ requirements {
845
+ category
846
+ label
847
+ value
848
+ }
849
+ }
850
+ ${STALL_TYPE_FIELDS_FRAGMENT}
851
+ `;
852
+ var EVENT = import_client4.gql`
853
+ fragment EventFields on EventType {
854
+ _id
855
+ active
856
+ adIds
857
+ approvedAt
858
+ cover {
859
+ ...ResourceImageFields
860
+ }
861
+ claimed
862
+ createdAt
863
+ contactDetails {
864
+ ...ContactDetailsFields
865
+ }
866
+ dateTime {
867
+ ...DateTimeFields
868
+ }
869
+ description
870
+ deletedAt
871
+ googlePlaceId
872
+ images {
873
+ ...ResourceImageFields
874
+ }
875
+ eventType
876
+ location {
877
+ ...LocationFields
878
+ }
879
+ logo {
880
+ ...ResourceImageFields
881
+ }
882
+ eventInfoId
883
+ name
884
+ nzbn
885
+ owner {
886
+ ...OwnerFields
887
+ }
888
+ promoCodes
889
+ provider
890
+ posterUsage {
891
+ ...PosterUsageFields
892
+ }
893
+ region
894
+ relations {
895
+ relationId
896
+ relationDates {
897
+ ...RelationDates
898
+ }
899
+ }
900
+ rating
901
+ reviewCount
902
+ rainOrShine
903
+ relatedPost {
904
+ ...RelatedPostFields
905
+ }
906
+ socialMedia {
907
+ ...SocialMediaFields
908
+ }
909
+ sharePublic {
910
+ ...SocialShareResourceFields
911
+ }
912
+ shareRelation {
913
+ ...SocialShareResourceFields
914
+ }
915
+ slug
916
+ tags
917
+ termsAgreement {
918
+ ...TermsAgreementFields
919
+ }
920
+ updatedAt
921
+ }
922
+ ${DATETIME_FIELDS_FRAGMENT}
923
+ ${LOCATION_FIELDS_FRAGMENT}
924
+ ${OWNER_FIELDS_FRAGMENT}
925
+ ${RESOURCE_IMAGE_FIELDS_FRAGMENT}
926
+ ${SOCIAL_MEDIA_FIELDS_FRAGMENT}
927
+ ${POSTER_USAGE_FIELDS_FRAGMENT}
928
+ ${CONTACT_DETAILS_FIELDS_FRAGMENT}
929
+ ${TERMS_AGREEMENT_FIELDS_FRAGMENT}
930
+ ${RELATION_DATES_FRAGMENT}
931
+ ${RELATED_POST_FIELDS_FRAGMENT}
932
+ ${SOCIAL_SHARE_RESOURCE_FIELDS_FRAGMENT}
933
+ `;
934
+ var GET_EVENTS = import_client4.gql`
935
+ query getEvents($dateStatus: EventDateStatusEnumType) {
936
+ events(dateStatus: $dateStatus) {
937
+ ...EventListItemFields
938
+ }
939
+ }
940
+ ${EVENT_LIST_ITEM}
941
+ `;
942
+ var GET_EVENT = import_client4.gql`
943
+ query getEvent($_id: ID!) {
944
+ event(_id: $_id) {
945
+ ...EventFields
946
+ }
947
+ }
948
+ ${EVENT}
949
+ `;
950
+ var GET_EVENT_BY_PLACE_ID = import_client4.gql`
951
+ query getEventByPlaceId($googlePlaceId: String!) {
952
+ eventByPlaceId(googlePlaceId: $googlePlaceId) {
953
+ ...EventListItemFields
954
+ }
955
+ }
956
+ ${EVENT_LIST_ITEM}
957
+ `;
958
+ var GET_EVENTS_BY_REGION = import_client4.gql`
959
+ query getEventsByRegion(
960
+ $region: String!
961
+ $options: ResourcesByRegionOptions
962
+ $dateStatus: EventDateStatusEnumType
963
+ ) {
964
+ eventsByRegion(
965
+ region: $region
966
+ options: $options
967
+ dateStatus: $dateStatus
968
+ ) {
969
+ ...EventListItemFields
970
+ }
971
+ }
972
+ ${EVENT_LIST_ITEM}
973
+ `;
974
+ var SEARCH_EVENTS = import_client4.gql`
975
+ query searchEvents(
976
+ $region: String!
977
+ $search: String
978
+ $tags: [String]
979
+ $dateStatus: EventDateStatusEnumType
980
+ ) {
981
+ eventsSearch(
982
+ region: $region
983
+ search: $search
984
+ tags: $tags
985
+ dateStatus: $dateStatus
986
+ ) {
987
+ ...EventListItemFields
988
+ }
989
+ }
990
+ ${EVENT_LIST_ITEM}
991
+ `;
992
+ var GET_EVENTS_NEAR_ME = import_client4.gql`
993
+ query getEventsNearMe(
994
+ $latitude: Float!
995
+ $longitude: Float!
996
+ $radius: Int
997
+ $dateStatus: EventDateStatusEnumType
998
+ ) {
999
+ eventsNearMe(
1000
+ latitude: $latitude
1001
+ longitude: $longitude
1002
+ radius: $radius
1003
+ dateStatus: $dateStatus
1004
+ ) {
1005
+ ...EventListItemFields
1006
+ }
1007
+ }
1008
+ ${EVENT_LIST_ITEM}
1009
+ `;
1010
+ var GET_EVENT_INFO = import_client4.gql`
1011
+ query getEventInfo($eventId: ID!) {
1012
+ eventInfo(eventId: $eventId) {
1013
+ ...EventInfoFields
1014
+ }
1015
+ }
1016
+ ${EVENT_INFO}
1017
+ `;
1018
+
1019
+ // src/graphql/queries/partner.ts
1020
+ var import_client5 = require("@apollo/client");
1021
+ var PARTNER = import_client5.gql`
1022
+ fragment PartnerFields on PartnerType {
1023
+ _id
1024
+ active
1025
+ adIds
1026
+ approvedAt
1027
+ cover {
1028
+ ...ResourceImageFields
1029
+ }
1030
+ createdAt
1031
+ contactDetails {
1032
+ ...ContactDetailsFields
1033
+ }
1034
+ description
1035
+ deletedAt
1036
+ images {
1037
+ ...ResourceImageFields
1038
+ }
1039
+ location {
1040
+ ...LocationFields
1041
+ }
1042
+ logo {
1043
+ ...ResourceImageFields
1044
+ }
1045
+ name
1046
+ nzbn
1047
+ owner {
1048
+ ...OwnerFields
1049
+ }
1050
+ partnerType
1051
+ posterUsage {
1052
+ ...PosterUsageFields
1053
+ }
1054
+ rating
1055
+ region
1056
+ reviewCount
1057
+ relatedPost {
1058
+ ...RelatedPostFields
1059
+ }
1060
+ socialMedia {
1061
+ ...SocialMediaFields
1062
+ }
1063
+ slug
1064
+ sharePublic {
1065
+ ...SocialShareResourceFields
1066
+ }
1067
+ termsAgreement {
1068
+ ...TermsAgreementFields
1069
+ }
1070
+ updatedAt
1071
+ }
1072
+ ${TERMS_AGREEMENT_FIELDS_FRAGMENT}
1073
+ ${LOCATION_FIELDS_FRAGMENT}
1074
+ ${OWNER_FIELDS_FRAGMENT}
1075
+ ${RESOURCE_IMAGE_FIELDS_FRAGMENT}
1076
+ ${POSTER_USAGE_FIELDS_FRAGMENT}
1077
+ ${SOCIAL_MEDIA_FIELDS_FRAGMENT}
1078
+ ${CONTACT_DETAILS_FIELDS_FRAGMENT}
1079
+ ${RELATED_POST_FIELDS_FRAGMENT}
1080
+ ${SOCIAL_SHARE_RESOURCE_FIELDS_FRAGMENT}
1081
+ `;
1082
+ var GET_PARTNERS = import_client5.gql`
1083
+ query getPartners {
1084
+ partners {
1085
+ ...PartnerFields
1086
+ }
1087
+ }
1088
+ ${PARTNER}
1089
+ `;
1090
+ var GET_PARTNER = import_client5.gql`
1091
+ query getPartner($_id: ID!) {
1092
+ partner(_id: $_id) {
1093
+ ...PartnerFields
1094
+ }
1095
+ }
1096
+ ${PARTNER}
1097
+ `;
1098
+ var GET_PARTNERS_BY_REGION = import_client5.gql`
1099
+ query getPartnersByRegion(
1100
+ $region: String!
1101
+ $options: ResourcesByRegionOptions
1102
+ ) {
1103
+ partnersByRegion(region: $region, options: $options) {
1104
+ ...PartnerFields
1105
+ }
1106
+ }
1107
+ ${PARTNER}
1108
+ `;
1109
+ var SEARCH_PARTNERS = import_client5.gql`
1110
+ query searchPartners($search: String!, $region: String!) {
1111
+ partnersSearch(search: $search, region: $region) {
1112
+ ...PartnerFields
1113
+ }
1114
+ }
1115
+ ${PARTNER}
1116
+ `;
1117
+
1118
+ // src/graphql/queries/vendor.ts
1119
+ var import_client6 = require("@apollo/client");
1120
+ var VENDOR_DATETIME_FIELDS_FRAGMENT = import_client6.gql`
1121
+ fragment VendorDateTimeFields on VendorDateTimeType {
1122
+ dateStatus
1123
+ endDate
1124
+ endTime
1125
+ startDate
1126
+ startTime
1127
+ }
1128
+ `;
1129
+ var VENDOR_PRODUCT_LIST_FIELDS_FRAGMENT = import_client6.gql`
1130
+ fragment VendorProductListFields on VendorProductListType {
1131
+ description
1132
+ name
1133
+ price
1134
+ priceUnit
1135
+ productGroups
1136
+ }
1137
+ `;
1138
+ var VENDOR = import_client6.gql`
1139
+ fragment VendorFields on VendorType {
1140
+ _id
1141
+ active
1142
+ adIds
1143
+ approvedAt
1144
+ availability {
1145
+ corporate
1146
+ private
1147
+ school
1148
+ }
1149
+ vendorInfoId
1150
+ categories {
1151
+ ...CategoryFields
1152
+ }
1153
+ calendar {
1154
+ active
1155
+ calendarData {
1156
+ dateTime {
1157
+ ...VendorDateTimeFields
1158
+ }
1159
+ description
1160
+ location {
1161
+ ...LocationFields
1162
+ }
1163
+ }
1164
+ }
1165
+ contactDetails {
1166
+ ...ContactDetailsFields
1167
+ }
1168
+ cover {
1169
+ ...ResourceImageFields
1170
+ }
1171
+ createdAt
1172
+ claimed
1173
+ description
1174
+ deletedAt
1175
+ foodTruck
1176
+ images {
1177
+ ...ResourceImageFields
1178
+ }
1179
+ logo {
1180
+ ...ResourceImageFields
1181
+ }
1182
+ name
1183
+ owner {
1184
+ ...OwnerFields
1185
+ }
1186
+ products {
1187
+ active
1188
+ productsList {
1189
+ ...VendorProductListFields
1190
+ }
1191
+ }
1192
+ promoCodes
1193
+ posterUsage {
1194
+ ...PosterUsageFields
1195
+ }
1196
+ rating
1197
+ region
1198
+ reviewCount
1199
+ relatedPost {
1200
+ ...RelatedPostFields
1201
+ }
1202
+ relations {
1203
+ relationId
1204
+ relationDates {
1205
+ ...RelationDates
1206
+ }
1207
+ }
1208
+ slug
1209
+ socialMedia {
1210
+ ...SocialMediaFields
1211
+ }
1212
+ sharePublic {
1213
+ ...SocialShareResourceFields
1214
+ }
1215
+ shareRelation {
1216
+ ...SocialShareResourceFields
1217
+ }
1218
+ termsAgreement {
1219
+ ...TermsAgreementFields
1220
+ }
1221
+ updatedAt
1222
+ vendorType
1223
+ unregisteredVendorId
1224
+ }
1225
+ ${CATEGORY_FIELDS_FRAGMENT}
1226
+ ${VENDOR_DATETIME_FIELDS_FRAGMENT}
1227
+ ${LOCATION_FIELDS_FRAGMENT}
1228
+ ${OWNER_FIELDS_FRAGMENT}
1229
+ ${RESOURCE_IMAGE_FIELDS_FRAGMENT}
1230
+ ${SOCIAL_MEDIA_FIELDS_FRAGMENT}
1231
+ ${POSTER_USAGE_FIELDS_FRAGMENT}
1232
+ ${VENDOR_PRODUCT_LIST_FIELDS_FRAGMENT}
1233
+ ${CONTACT_DETAILS_FIELDS_FRAGMENT}
1234
+ ${TERMS_AGREEMENT_FIELDS_FRAGMENT}
1235
+ ${RELATION_DATES_FRAGMENT}
1236
+ ${RELATED_POST_FIELDS_FRAGMENT}
1237
+ ${SOCIAL_SHARE_RESOURCE_FIELDS_FRAGMENT}
1238
+ `;
1239
+ var VENDOR_ATTRIBUTES_FRAGMENT = import_client6.gql`
1240
+ fragment VendorAttributesFields on VendorAttributesType {
1241
+ details
1242
+ isRequired
1243
+ }
1244
+ `;
1245
+ var VENDOR_INFO = import_client6.gql`
1246
+ fragment VendorInfoFields on VendorInfoType {
1247
+ _id
1248
+ compliance {
1249
+ foodBeverageLicense
1250
+ liabilityInsurance
1251
+ }
1252
+ documents {
1253
+ ...ResourceImageFields
1254
+ }
1255
+ requirements {
1256
+ electricity {
1257
+ ...VendorAttributesFields
1258
+ }
1259
+ gazebo {
1260
+ ...VendorAttributesFields
1261
+ }
1262
+ table {
1263
+ ...VendorAttributesFields
1264
+ }
1265
+ }
1266
+ product {
1267
+ foodFlavors
1268
+ packaging
1269
+ priceRange {
1270
+ max
1271
+ min
1272
+ }
1273
+ producedIn
1274
+ }
1275
+ stallInfo {
1276
+ size {
1277
+ depth
1278
+ width
1279
+ }
1280
+ }
1281
+ vendorId
1282
+ }
1283
+ ${VENDOR_ATTRIBUTES_FRAGMENT}
1284
+ ${RESOURCE_IMAGE_FIELDS_FRAGMENT}
1285
+ `;
1286
+ var UNREGISTERED_VENDOR_INVITATION_FRAGMENT = import_client6.gql`
1287
+ fragment UnregisteredVendorInvitationFields on UnregisteredVendorInvitationType {
1288
+ dateTime {
1289
+ ...DateTimeFields
1290
+ }
1291
+ inviterId
1292
+ }
1293
+ ${DATETIME_FIELDS_FRAGMENT}
1294
+ `;
1295
+ var UNREGISTERED_VENDOR = import_client6.gql`
1296
+ fragment UnregisteredVendorFields on UnregisteredVendorType {
1297
+ _id
1298
+ active
1299
+ categoryIds
1300
+ claimed
1301
+ createdAt
1302
+ deletedAt
1303
+ email
1304
+ invitations {
1305
+ ...UnregisteredVendorInvitationFields
1306
+ }
1307
+ name
1308
+ region
1309
+ updatedAt
1310
+ }
1311
+ ${UNREGISTERED_VENDOR_INVITATION_FRAGMENT}
1312
+ `;
1313
+ var GET_VENDORS = import_client6.gql`
1314
+ query getVendors {
1315
+ vendors {
1316
+ ...VendorFields
1317
+ }
1318
+ }
1319
+ ${VENDOR}
1320
+ `;
1321
+ var GET_VENDOR = import_client6.gql`
1322
+ query getVendor($_id: ID!) {
1323
+ vendor(_id: $_id) {
1324
+ ...VendorFields
1325
+ }
1326
+ }
1327
+ ${VENDOR}
1328
+ `;
1329
+ var GET_VENDORS_BY_REGION = import_client6.gql`
1330
+ query getVendorsByRegion(
1331
+ $region: String!
1332
+ $options: ResourcesByRegionOptions
1333
+ ) {
1334
+ vendorsByRegion(region: $region, options: $options) {
1335
+ ...VendorFields
1336
+ }
1337
+ }
1338
+ ${VENDOR}
1339
+ `;
1340
+ var SEARCH_VENDORS = import_client6.gql`
1341
+ query searchVendors($search: String!, $region: String!) {
1342
+ vendorSearch(search: $search, region: $region) {
1343
+ ...VendorFields
1344
+ }
1345
+ }
1346
+ ${VENDOR}
1347
+ `;
1348
+ var GET_VENDOR_INFO = import_client6.gql`
1349
+ query getVendorInfo($vendorId: ID!) {
1350
+ vendorInfo(vendorId: $vendorId) {
1351
+ ...VendorInfoFields
1352
+ }
1353
+ }
1354
+ ${VENDOR_INFO}
1355
+ `;
1356
+ var GET_UNREGISTERED_VENDORS = import_client6.gql`
1357
+ query getUnregisteredVendors {
1358
+ unregisteredVendors {
1359
+ ...UnregisteredVendorFields
1360
+ }
1361
+ }
1362
+ ${UNREGISTERED_VENDOR}
1363
+ `;
1364
+ var GET_UNREGISTERED_VENDORS_BY_INVITER_ID = import_client6.gql`
1365
+ query getUnregisteredVendorsByInviterId($inviterId: ID!) {
1366
+ unregisteredVendorsByInviterId(inviterId: $inviterId) {
1367
+ ...UnregisteredVendorFields
1368
+ }
1369
+ }
1370
+ ${UNREGISTERED_VENDOR}
1371
+ `;
1372
+ var GET_UNREGISTERED_VENDOR = import_client6.gql`
1373
+ query getUnregisteredVendor($_id: ID!) {
1374
+ unregisteredVendor(_id: $_id) {
1375
+ ...UnregisteredVendorFields
1376
+ }
1377
+ }
1378
+ ${UNREGISTERED_VENDOR}
1379
+ `;
1380
+
1381
+ // src/graphql/queries/user.ts
1382
+ var GET_USERS = import_client7.gql`
1383
+ query getUsers {
1384
+ users {
1385
+ ...UserFields
1386
+ }
1387
+ }
1388
+ ${USER_FIELDS_FRAGMENT}
1389
+ `;
1390
+ var GET_USER = import_client7.gql`
1391
+ query getUser($_id: ID!) {
1392
+ user(_id: $_id) {
1393
+ ...UserFields
1394
+ }
1395
+ }
1396
+ ${USER_FIELDS_FRAGMENT}
1397
+ `;
1398
+ var GET_USER_EVENTS = import_client7.gql`
1399
+ query getUserEvents {
1400
+ userEvents {
1401
+ ...EventFields
1402
+ }
1403
+ }
1404
+ ${EVENT}
1405
+ `;
1406
+ var GET_USER_VENDORS = import_client7.gql`
1407
+ query getUserVendors {
1408
+ userVendors {
1409
+ ...VendorFields
1410
+ }
1411
+ }
1412
+ ${VENDOR}
1413
+ `;
1414
+ var GET_USER_PARTNERS = import_client7.gql`
1415
+ query getUserPartners {
1416
+ userPartners {
1417
+ ...PartnerFields
1418
+ }
1419
+ }
1420
+ ${PARTNER}
1421
+ `;
1422
+ var GET_USER_ACTIVITIES = import_client7.gql`
1423
+ query getUserActivities {
1424
+ userActivities {
1425
+ favourites {
1426
+ events {
1427
+ ...EventListItemFields
1428
+ }
1429
+ partners {
1430
+ ...PartnerFields
1431
+ }
1432
+ vendors {
1433
+ ...VendorFields
1434
+ }
1435
+ }
1436
+ going {
1437
+ events {
1438
+ ...EventListItemFields
1439
+ }
1440
+ }
1441
+ interested {
1442
+ events {
1443
+ ...EventListItemFields
1444
+ }
1445
+ }
1446
+ present {
1447
+ events {
1448
+ ...EventListItemFields
1449
+ }
1450
+ }
1451
+ }
1452
+ }
1453
+ ${EVENT_LIST_ITEM}
1454
+ ${VENDOR}
1455
+ ${PARTNER}
1456
+ `;
1457
+ var GET_USER_RESOURCES = import_client7.gql`
1458
+ query getUserResources($userId: ID!) {
1459
+ userResources(userId: $userId) {
1460
+ resources {
1461
+ _id
1462
+ logo
1463
+ name
1464
+ resourceType
1465
+ }
1466
+ }
1467
+ }
1468
+ `;
1469
+
1470
+ // src/graphql/hooks/user/hooksQuery.ts
1471
+ var useGetUser = (_id) => {
1472
+ const { loading, error, data, refetch } = (0, import_client8.useQuery)(
1473
+ GET_USER,
1474
+ {
1475
+ fetchPolicy: "network-only",
1476
+ skip: !_id || _id === "",
1477
+ variables: { _id }
1478
+ }
1479
+ );
1480
+ const user = data?.user;
1481
+ return { error, loading, refetch, user };
1482
+ };
1483
+
1484
+ // src/storage/index.ts
1485
+ var USER_STORAGE_KEY = "authUser";
1486
+
1487
+ // src/auth/useAuthCore.ts
1488
+ function useAuthCore(adapters) {
1489
+ const {
1490
+ storage,
1491
+ authManager,
1492
+ afterLogout,
1493
+ shouldCallLogoutMutation = () => true,
1494
+ notifyLogoutSuccess,
1495
+ notifySessionExpired,
1496
+ onError
1497
+ } = adapters;
1498
+ const [authUser, setAuthUser] = (0, import_react.useState)(null);
1499
+ const [isLoading, setIsLoading] = (0, import_react.useState)(true);
1500
+ const userId = (0, import_react.useMemo)(() => authUser?._id ?? "", [authUser?._id]);
1501
+ const { refetch } = useGetUser(userId);
1502
+ const { logout, loading } = useLogout();
1503
+ const handleSetAuthUser = (0, import_react.useCallback)(
1504
+ async (user) => {
1505
+ setAuthUser(user);
1506
+ if (user) {
1507
+ await storage.setItem(USER_STORAGE_KEY, JSON.stringify(user));
1508
+ } else {
1509
+ await storage.removeItem(USER_STORAGE_KEY);
1510
+ }
1511
+ },
1512
+ [storage]
1513
+ );
1514
+ const handleRefetchUser = (0, import_react.useCallback)(async () => {
1515
+ if (!authUser) return;
1516
+ try {
1517
+ const result = await refetch();
1518
+ if (!result) return;
1519
+ const { data } = result;
1520
+ if (data?.user) await handleSetAuthUser(data.user);
1521
+ } catch (error) {
1522
+ onError?.(error, { action: "refetchUser" });
1523
+ console.warn(
1524
+ "Failed to refetch user:",
1525
+ error instanceof Error ? error.message : error
1526
+ );
1527
+ }
1528
+ }, [authUser, handleSetAuthUser, onError, refetch]);
1529
+ const licences = (0, import_react.useCallback)(
1530
+ (resourceId) => {
1531
+ const myLicences = authUser?.licences?.map((licence) => licence.licenceType) ?? [];
1532
+ const myResourceIds = [
1533
+ authUser?.vendor ?? null,
1534
+ authUser?.partner ?? null,
1535
+ ...authUser?.events ?? []
1536
+ ].filter((id) => id !== null);
1537
+ return myResourceIds.includes(resourceId) ? getLicenceFlagsByRole(myLicences) : NO_LICENCE_FLAGS;
1538
+ },
1539
+ [authUser]
1540
+ );
1541
+ const getLicenseAccessLevel = (0, import_react.useCallback)(
1542
+ (limitType, resourceId, resourceType) => {
1543
+ if (!isLicencedResourceType(resourceType)) {
1544
+ return 0;
1545
+ }
1546
+ if (resourceId === "") {
1547
+ return DEFAULT_LIMITS[limitType].pro;
1548
+ }
1549
+ const roleLicences = licences(resourceId)[resourceType];
1550
+ if (roleLicences.pro_plus) return DEFAULT_LIMITS[limitType].pro_plus;
1551
+ if (roleLicences.pro) return DEFAULT_LIMITS[limitType].pro;
1552
+ if (roleLicences.standard) return DEFAULT_LIMITS[limitType].standard;
1553
+ return 0;
1554
+ },
1555
+ [licences]
1556
+ );
1557
+ const hasVendorLicence = (0, import_react.useMemo)(
1558
+ () => hasLicence(authUser, "vendor"),
1559
+ [authUser]
1560
+ );
1561
+ const hasPartnerLicence = (0, import_react.useMemo)(
1562
+ () => hasLicence(authUser, "partner"),
1563
+ [authUser]
1564
+ );
1565
+ const hasEventLicence = (0, import_react.useMemo)(
1566
+ () => hasLicence(authUser, "event"),
1567
+ [authUser]
1568
+ );
1569
+ const hasUserLicence = (0, import_react.useCallback)(
1570
+ (licenceType) => hasUserLicenceType(authUser, licenceType),
1571
+ [authUser]
1572
+ );
1573
+ const permissions = (0, import_react.useMemo)(() => {
1574
+ if (authUser?.permissions != null) {
1575
+ return authUser.permissions;
1576
+ }
1577
+ return getPermissionsForRoles(authUser?.roles);
1578
+ }, [authUser?.permissions, authUser?.roles]);
1579
+ const hasPermissionFn = (0, import_react.useCallback)(
1580
+ (permission) => permissionListIncludes(permissions, permission),
1581
+ [permissions]
1582
+ );
1583
+ const hasRoleFn = (0, import_react.useCallback)(
1584
+ (role) => hasRole(authUser?.roles, role),
1585
+ [authUser?.roles]
1586
+ );
1587
+ const isAdmin = (0, import_react.useMemo)(
1588
+ () => hasRole(authUser?.roles, "admin" /* ADMIN */) || permissionListIncludes(permissions, "dashboard.admin") || permissionListIncludes(permissions, "*"),
1589
+ [authUser?.roles, permissions]
1590
+ );
1591
+ const isSuperAdmin = (0, import_react.useMemo)(
1592
+ () => hasRole(authUser?.roles, "super_admin" /* SUPER_ADMIN */),
1593
+ [authUser?.roles]
1594
+ );
1595
+ const isAffiliate = (0, import_react.useMemo)(
1596
+ () => hasRole(authUser?.roles, "affiliate" /* AFFILIATE */) && authUser?.affiliate !== null && authUser?.affiliate !== void 0,
1597
+ [authUser?.roles, authUser?.affiliate]
1598
+ );
1599
+ const isSchool = (0, import_react.useMemo)(
1600
+ () => hasRole(authUser?.roles, "school" /* SCHOOL */) && authUser?.school !== null && authUser?.school !== void 0,
1601
+ [authUser?.roles, authUser?.school]
1602
+ );
1603
+ (0, import_react.useEffect)(() => {
1604
+ const loadUser = async () => {
1605
+ try {
1606
+ const userJson = await storage.getItem(USER_STORAGE_KEY);
1607
+ await handleSetAuthUser(userJson ? JSON.parse(userJson) : null);
1608
+ } catch (error) {
1609
+ onError?.(error, { action: "loadUserFromStorage" });
1610
+ console.error("Failed to load user from storage:", error);
1611
+ } finally {
1612
+ setIsLoading(false);
1613
+ }
1614
+ };
1615
+ void loadUser();
1616
+ }, []);
1617
+ const logoutWithReason = (0, import_react.useCallback)(
1618
+ async (reason) => {
1619
+ try {
1620
+ if (shouldCallLogoutMutation(reason)) {
1621
+ try {
1622
+ const result = await logout();
1623
+ const message = result?.data?.logout?.message;
1624
+ if (message) {
1625
+ notifyLogoutSuccess?.(message);
1626
+ }
1627
+ } catch (err) {
1628
+ onError?.(err, { action: "logout" });
1629
+ console.warn("Logout request failed (ignored):", err);
1630
+ }
1631
+ }
1632
+ } finally {
1633
+ await afterLogout(reason);
1634
+ setAuthUser(null);
1635
+ await storage.removeItem(USER_STORAGE_KEY);
1636
+ }
1637
+ },
1638
+ [
1639
+ afterLogout,
1640
+ logout,
1641
+ notifyLogoutSuccess,
1642
+ onError,
1643
+ shouldCallLogoutMutation,
1644
+ storage
1645
+ ]
1646
+ );
1647
+ const handleLogoutExplicit = (0, import_react.useCallback)(
1648
+ () => logoutWithReason("manual"),
1649
+ [logoutWithReason]
1650
+ );
1651
+ const handleLogoutExpired = (0, import_react.useCallback)(async () => {
1652
+ const hadSession = authUser != null;
1653
+ if (!hadSession) return;
1654
+ await logoutWithReason("expired");
1655
+ notifySessionExpired?.();
1656
+ }, [authUser, logoutWithReason, notifySessionExpired]);
1657
+ (0, import_react.useEffect)(() => {
1658
+ authManager.setLogout(() => handleLogoutExpired());
1659
+ authManager.setUserRefetch(() => handleRefetchUser());
1660
+ }, [authManager, handleLogoutExpired, handleRefetchUser]);
1661
+ return {
1662
+ authUser,
1663
+ getLicenseAccessLevel,
1664
+ handleLogoutExplicit,
1665
+ hasEventLicence,
1666
+ hasPartnerLicence,
1667
+ hasPermission: hasPermissionFn,
1668
+ hasRole: hasRoleFn,
1669
+ hasUserLicence,
1670
+ hasVendorLicence,
1671
+ isAdmin,
1672
+ isAffiliate,
1673
+ isLoading: loading || isLoading,
1674
+ isSchool,
1675
+ isSuperAdmin,
1676
+ permissions,
1677
+ refetchUser: handleRefetchUser,
1678
+ setUser: handleSetAuthUser
1679
+ };
1680
+ }
1681
+
1682
+ // src/auth/UserProvider.tsx
1683
+ var import_react2 = require("react");
1684
+ var import_jsx_runtime = require("react/jsx-runtime");
1685
+ var UserContext = (0, import_react2.createContext)(void 0);
1686
+ var UserProvider = ({ children, value }) => {
1687
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(UserContext.Provider, { value, children });
1688
+ };
1689
+ var useAuthUser = () => {
1690
+ const context = (0, import_react2.useContext)(UserContext);
1691
+ if (!context) {
1692
+ throw new Error("useAuthUser must be used within a UserProvider");
1693
+ }
1694
+ return context;
1695
+ };
1696
+ // Annotate the CommonJS export names for ESM import in node:
1697
+ 0 && (module.exports = {
1698
+ ADMIN_APP_ROLES,
1699
+ ADMIN_DASHBOARD_CONTEXTS,
1700
+ DEFAULT_LIMITS,
1701
+ NO_LICENCE_FLAGS,
1702
+ PERMISSIONS,
1703
+ ROLE_PERMISSIONS,
1704
+ UserProvider,
1705
+ WILDCARD_PERMISSION,
1706
+ canAccessAdminApp,
1707
+ canAccessAdminPath,
1708
+ createAuthManager,
1709
+ getDefaultAdminHome,
1710
+ getLicenceFlagsByRole,
1711
+ getPermissionsForRoles,
1712
+ getUsableAdminContexts,
1713
+ hasAllPermissions,
1714
+ hasAnyPermission,
1715
+ hasAnyRole,
1716
+ hasLicence,
1717
+ hasPermission,
1718
+ hasRole,
1719
+ hasUserLicenceType,
1720
+ isLicencedResourceType,
1721
+ isProfileBadgeLicence,
1722
+ permissionListIncludes,
1723
+ resolveAdminContextFromPath,
1724
+ useAuthCore,
1725
+ useAuthUser
1726
+ });
1727
+ //# sourceMappingURL=index.cjs.map