@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
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/utils/index.ts
31
31
  var utils_exports = {};
32
32
  __export(utils_exports, {
33
+ AFFILIATE_PARTICIPANT_TYPE_LABELS: () => AFFILIATE_PARTICIPANT_TYPE_LABELS,
33
34
  AFFILIATE_REWARDS: () => AFFILIATE_REWARDS,
34
35
  ANDROID_URL: () => ANDROID_URL,
35
36
  CLUEMART_MAIN_DOMAIN_URL: () => CLUEMART_MAIN_DOMAIN_URL,
@@ -37,9 +38,11 @@ __export(utils_exports, {
37
38
  CM_SCHOOL_PROMO_CODE: () => CM_SCHOOL_PROMO_CODE,
38
39
  DEFAULT_RESOURCES_RETURN_LIMIT: () => DEFAULT_RESOURCES_RETURN_LIMIT,
39
40
  DEFAULT_RESOURCES_RETURN_OFFSET: () => DEFAULT_RESOURCES_RETURN_OFFSET,
41
+ DEFAULT_USER_FACING_ERROR: () => DEFAULT_USER_FACING_ERROR,
40
42
  EVENT_DATE_STATUS_PERIOD_MAP: () => EVENT_DATE_STATUS_PERIOD_MAP,
41
43
  IOS_URL: () => IOS_URL,
42
44
  KNOWN_EVENT_SCHEDULE_STATUSES: () => KNOWN_EVENT_SCHEDULE_STATUSES,
45
+ NETWORK_USER_FACING_ERROR: () => NETWORK_USER_FACING_ERROR,
43
46
  PostTypeLabels: () => PostTypeLabels,
44
47
  SCHOOL_MAX_STUDENT_COUNT: () => SCHOOL_MAX_STUDENT_COUNT,
45
48
  SCHOOL_MIN_STUDENT_COUNT: () => SCHOOL_MIN_STUDENT_COUNT,
@@ -64,11 +67,14 @@ __export(utils_exports, {
64
67
  filterVendorEventsBySelectedDate: () => filterVendorEventsBySelectedDate,
65
68
  findEventDateTimeByIsoDate: () => findEventDateTimeByIsoDate,
66
69
  formatDate: () => formatDate,
70
+ formatIrdNumber: () => formatIrdNumber,
71
+ formatNZBankAccount: () => formatNZBankAccount,
67
72
  formatTimestamp: () => formatTimestamp,
68
73
  fromCalendarIsoDate: () => fromCalendarIsoDate,
69
74
  futureTimePeriods: () => futureTimePeriods,
70
75
  getAllowedEventDateStatuses: () => getAllowedEventDateStatuses,
71
76
  getCurrentAndFutureDates: () => getCurrentAndFutureDates,
77
+ getErrorMessage: () => getErrorMessage,
72
78
  getEventCalendarIsoDates: () => getEventCalendarIsoDates,
73
79
  getEventDatesWithStallholders: () => getEventDatesWithStallholders,
74
80
  getEventScheduleStatusLabel: () => getEventScheduleStatusLabel,
@@ -86,12 +92,16 @@ __export(utils_exports, {
86
92
  getVendorEventsEmptyMessage: () => getVendorEventsEmptyMessage,
87
93
  hasMatchingEventDate: () => hasMatchingEventDate,
88
94
  isFutureDatesBeforeThreshold: () => isFutureDatesBeforeThreshold,
95
+ isInternalErrorMessage: () => isInternalErrorMessage,
89
96
  isIsoDateString: () => isIsoDateString,
90
97
  isResourceImageActive: () => isResourceImageActive,
98
+ isTransientNetworkError: () => isTransientNetworkError,
99
+ isValidIrdNumber: () => isValidIrdNumber,
91
100
  licenseNiceNames: () => licenseNiceNames,
92
101
  mapArrayToOptions: () => mapArrayToOptions,
93
102
  matchesCategory: () => matchesCategory,
94
103
  matchesSelectedDate: () => matchesSelectedDate,
104
+ normalizeIrdNumber: () => normalizeIrdNumber,
95
105
  normalizeResourceImage: () => normalizeResourceImage,
96
106
  normalizeUrl: () => normalizeUrl,
97
107
  nzStartOfDay: () => nzStartOfDay,
@@ -107,6 +117,7 @@ __export(utils_exports, {
107
117
  timeFormat: () => timeFormat,
108
118
  toCalendarIsoDate: () => toCalendarIsoDate,
109
119
  toNZTime: () => toNZTime,
120
+ toUserFacingErrorMessage: () => toUserFacingErrorMessage,
110
121
  truncateText: () => truncateText
111
122
  });
112
123
  module.exports = __toCommonJS(utils_exports);
@@ -269,124 +280,11 @@ var EnumEventDateStatus = /* @__PURE__ */ ((EnumEventDateStatus2) => {
269
280
  return EnumEventDateStatus2;
270
281
  })(EnumEventDateStatus || {});
271
282
 
272
- // src/types/global.ts
273
- var PROMO_CODE_PREFIX = "CM-";
274
-
275
- // src/types/subscription.ts
276
- var TIER_FROM_LICENCE = {
277
- ["pro_event" /* PRO_EVENT */]: "pro",
278
- ["pro_plus_event" /* PRO_PLUS_EVENT */]: "pro_plus",
279
- ["pro_plus_vendor" /* PRO_PLUS_VENDOR */]: "pro_plus",
280
- ["pro_vendor" /* PRO_VENDOR */]: "pro",
281
- ["standard_event" /* STANDARD_EVENT */]: "standard",
282
- ["standard_partner" /* STANDARD_PARTNER */]: "standard",
283
- ["standard_vendor" /* STANDARD_VENDOR */]: "standard"
284
- };
285
-
286
- // src/utils/utils.ts
287
- var removeTypename = (obj) => {
288
- if (obj instanceof Date) {
289
- return obj;
290
- }
291
- if (obj instanceof File) {
292
- return obj;
293
- }
294
- if (isIsoDateString(obj)) {
295
- return obj;
296
- }
297
- if (Array.isArray(obj)) {
298
- return obj.map(removeTypename);
299
- }
300
- if (obj !== null && typeof obj === "object") {
301
- const { __typename, ...cleanedObj } = obj;
302
- return Object.keys(cleanedObj).reduce((acc, key) => {
303
- acc[key] = removeTypename(cleanedObj[key]);
304
- return acc;
305
- }, {});
306
- }
307
- return obj;
308
- };
309
- var truncateText = (text, maxLength = 30) => {
310
- return text.length > maxLength ? text.substring(0, maxLength) + "..." : text;
311
- };
283
+ // src/utils/mapArrayToOptions.ts
312
284
  var mapArrayToOptions = (items) => items.map((item) => ({
313
285
  label: item,
314
286
  value: item
315
287
  }));
316
- var capitalizeFirstLetter = (str) => {
317
- return str.split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
318
- };
319
- var statusOptions = [
320
- ...Object.values(EnumInviteStatus).map((status) => ({
321
- label: status,
322
- value: status
323
- })).sort((a, b) => a.label.localeCompare(b.label))
324
- // Sort the options alphabetically
325
- ];
326
- var availableRegionTypes = Object.values(EnumRegions);
327
- var availableRegionOptions = mapArrayToOptions(availableRegionTypes);
328
- var paymentMethodOptions = mapArrayToOptions(
329
- Object.values(EnumPaymentMethod)
330
- );
331
- function normalizeUrl(url) {
332
- if (!url.startsWith("http://") && !url.startsWith("https://")) {
333
- return `https://${url}`;
334
- }
335
- return url;
336
- }
337
- var licenseNiceNames = {
338
- ["pro_event" /* PRO_EVENT */]: "Pro Event",
339
- ["pro_vendor" /* PRO_VENDOR */]: "Pro Stallholder",
340
- ["standard_event" /* STANDARD_EVENT */]: "Standard Event",
341
- ["standard_vendor" /* STANDARD_VENDOR */]: "Standard Stallholder",
342
- ["pro_plus_event" /* PRO_PLUS_EVENT */]: "Pro+Ads Event",
343
- ["pro_plus_vendor" /* PRO_PLUS_VENDOR */]: "Pro+Ads Stallholder",
344
- ["standard_partner" /* STANDARD_PARTNER */]: "Partner"
345
- };
346
- var cluemartSocialMedia = [
347
- {
348
- link: "https://www.facebook.com/ClueMartApp",
349
- name: "facebook" /* FACEBOOK */
350
- },
351
- {
352
- link: "https://www.instagram.com/cluemart_app",
353
- name: "instagram" /* INSTAGRAM */
354
- },
355
- {
356
- link: "https://www.tiktok.com/@cluemart",
357
- name: "tiktok" /* TIKTOK */
358
- },
359
- {
360
- link: "https://www.youtube.com/@ClueMart-App-NZ",
361
- name: "youtube" /* YOUTUBE */
362
- }
363
- ];
364
- var IOS_URL = "https://apps.apple.com/nz/app/cluemart/id6747251008";
365
- var ANDROID_URL = "https://play.google.com/store/apps/details?id=com.timardex.cluemart";
366
- var DEFAULT_RESOURCES_RETURN_LIMIT = 1e3;
367
- var DEFAULT_RESOURCES_RETURN_OFFSET = 0;
368
- var CLUEMART_MAIN_DOMAIN_URL = "https://cluemart.co.nz";
369
- var rewardNiceNames = {
370
- ["mystery_joy_box" /* MYSTERY_JOY_BOX */]: {
371
- name: "Mystery Joy Box",
372
- points: 250
373
- },
374
- ["mystery_squeeze_box" /* MYSTERY_SQUEEZE_BOX */]: {
375
- name: "Mystery Squeeze Box",
376
- points: 350
377
- },
378
- ["mystery_deluxe_box" /* MYSTERY_DELUXE_BOX */]: {
379
- name: "Mystery Deluxe Box",
380
- points: 500
381
- }
382
- };
383
- var PostTypeLabels = {
384
- ["market_faces" /* MARKET_FACES */]: "Market Faces",
385
- ["clue_bites" /* CLUE_BITES */]: "Clue Bites",
386
- ["play_and_win" /* PLAY_AND_WIN */]: "Play & Win"
387
- };
388
- var CM_SCHOOL_PROMO_CODE = `${PROMO_CODE_PREFIX}SCHOOL`;
389
- var CM_AFFILIATE_PROMO_CODE = `${PROMO_CODE_PREFIX}AFFILIATE`;
390
288
 
391
289
  // src/utils/date.ts
392
290
  var dateFormat = "DD-MM-YYYY";
@@ -539,32 +437,173 @@ function computeDailyClueState(dailyClue) {
539
437
  };
540
438
  }
541
439
 
542
- // src/utils/affiliate.ts
543
- var AFFILIATE_REWARDS = {
544
- ["NEW_EVENT_REGISTRATION" /* NEW_EVENT_REGISTRATION */]: {
545
- description: "10 points for new event registration (one-time reward)",
546
- value: 10
440
+ // src/sharing/relationShareTypes.ts
441
+ var RELATION_SHARE_INVITATION = "invitation";
442
+ var RELATION_SHARE_APPLICATION = "application";
443
+
444
+ // src/sharing/constants.ts
445
+ var SHARE_SITE_URL = "https://cluemart.co.nz";
446
+ var SHARE_CALENDAR_ICON = "\u{1F4C5}";
447
+ var SHARE_MARKET_DATES_SECTION_HEADING = `${SHARE_CALENDAR_ICON} Market dates:`;
448
+ var SHARE_CHECKMARK_ICON = "\u2705";
449
+ var SHARE_REQUIREMENTS_SECTION_HEADING = `${SHARE_CHECKMARK_ICON} Requirements:`;
450
+ var SHARE_INFO_ICON = "\u2139\uFE0F";
451
+ var SHARE_TAGS_SECTION_HEADING = `${SHARE_INFO_ICON} Tags:`;
452
+ var SHARE_COMPLIANCE_PREFIX = `${SHARE_CHECKMARK_ICON} Compliance:`;
453
+ var SHARE_CATEGORY_ICON = "\u{1F3F7}\uFE0F";
454
+ var SHARE_CATEGORIES_SECTION_HEADING = `${SHARE_CATEGORY_ICON} Categories:`;
455
+ var SHARE_RULER_ICON = "\u{1F4CF}";
456
+ var SHARE_STALL_SIZE_PREFIX = `${SHARE_RULER_ICON} Stall size:`;
457
+ var SHARE_DOLLAR_ICON = "$";
458
+ var SHARE_PRICE_RANGE_PREFIX = `${SHARE_DOLLAR_ICON} Price range:`;
459
+ var SHARE_CLOCK_ICON = "\u23F0";
460
+ var SHARE_APPLICATION_DEADLINE_PREFIX = `${SHARE_CLOCK_ICON} Application deadline:`;
461
+ var DEFAULT_SHARE_OG_IMAGE = `${SHARE_SITE_URL}/assets/logo.webp`;
462
+ var SHARE_RESOURCE_LABEL = {
463
+ [RELATION_SHARE_APPLICATION]: "Application",
464
+ [RELATION_SHARE_INVITATION]: "Invitation",
465
+ clue_bites: "Clue Bites",
466
+ market_faces: "Market Faces",
467
+ play_and_win: "Play & Win",
468
+ market: "Market",
469
+ partner: "Partner",
470
+ stallholder: "Stallholder",
471
+ affiliate: "Affiliate",
472
+ school: "School"
473
+ };
474
+
475
+ // src/sharing/normalizeShareDescription.ts
476
+ function stripOverlaySubtitleSpecialChars(text) {
477
+ const regex = /[^\p{L}\p{M}\p{N}\s.,!?'"&\-():;/]/gu;
478
+ const result = text.replace(/\p{Extended_Pictographic}/gu, "").replace(regex, "");
479
+ return result.trim();
480
+ }
481
+
482
+ // src/types/global.ts
483
+ var PROMO_CODE_PREFIX = "CM-";
484
+
485
+ // src/types/subscription.ts
486
+ var TIER_FROM_LICENCE = {
487
+ ["pro_event" /* PRO_EVENT */]: "pro",
488
+ ["pro_plus_event" /* PRO_PLUS_EVENT */]: "pro_plus",
489
+ ["pro_plus_vendor" /* PRO_PLUS_VENDOR */]: "pro_plus",
490
+ ["pro_vendor" /* PRO_VENDOR */]: "pro",
491
+ ["standard_event" /* STANDARD_EVENT */]: "standard",
492
+ ["standard_partner" /* STANDARD_PARTNER */]: "standard",
493
+ ["standard_vendor" /* STANDARD_VENDOR */]: "standard",
494
+ ["standard_affiliate" /* STANDARD_AFFILIATE */]: "standard",
495
+ ["standard_school" /* STANDARD_SCHOOL */]: "standard"
496
+ };
497
+
498
+ // src/utils/utils.ts
499
+ var removeTypename = (obj) => {
500
+ if (obj instanceof Date) {
501
+ return obj;
502
+ }
503
+ if (obj instanceof File) {
504
+ return obj;
505
+ }
506
+ if (isIsoDateString(obj)) {
507
+ return obj;
508
+ }
509
+ if (Array.isArray(obj)) {
510
+ return obj.map(removeTypename);
511
+ }
512
+ if (obj !== null && typeof obj === "object") {
513
+ const { __typename, ...cleanedObj } = obj;
514
+ return Object.keys(cleanedObj).reduce((acc, key) => {
515
+ acc[key] = removeTypename(cleanedObj[key]);
516
+ return acc;
517
+ }, {});
518
+ }
519
+ return obj;
520
+ };
521
+ var truncateText = (text, maxLength = 30) => {
522
+ const result = stripOverlaySubtitleSpecialChars(text);
523
+ return result.length > maxLength ? result.substring(0, maxLength) + "..." : result;
524
+ };
525
+ var capitalizeFirstLetter = (str) => {
526
+ return str.split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
527
+ };
528
+ var statusOptions = [
529
+ ...Object.values(EnumInviteStatus).map((status) => ({
530
+ label: status,
531
+ value: status
532
+ })).sort((a, b) => a.label.localeCompare(b.label))
533
+ // Sort the options alphabetically
534
+ ];
535
+ var availableRegionTypes = Object.values(EnumRegions);
536
+ var availableRegionOptions = mapArrayToOptions(availableRegionTypes);
537
+ var paymentMethodOptions = mapArrayToOptions(
538
+ Object.values(EnumPaymentMethod)
539
+ );
540
+ function normalizeUrl(url) {
541
+ const withProtocol = !url.startsWith("http://") && !url.startsWith("https://") ? `https://${url}` : url;
542
+ return withProtocol.replace(/\/+$/, "");
543
+ }
544
+ var licenseNiceNames = {
545
+ ["pro_event" /* PRO_EVENT */]: "Pro Event",
546
+ ["pro_vendor" /* PRO_VENDOR */]: "Pro Stallholder",
547
+ ["standard_event" /* STANDARD_EVENT */]: "Standard Event",
548
+ ["standard_vendor" /* STANDARD_VENDOR */]: "Standard Stallholder",
549
+ ["pro_plus_event" /* PRO_PLUS_EVENT */]: "Pro+Ads Event",
550
+ ["pro_plus_vendor" /* PRO_PLUS_VENDOR */]: "Pro+Ads Stallholder",
551
+ ["standard_partner" /* STANDARD_PARTNER */]: "Partner",
552
+ ["standard_affiliate" /* STANDARD_AFFILIATE */]: "Affiliate",
553
+ ["standard_school" /* STANDARD_SCHOOL */]: "School"
554
+ };
555
+ var cluemartSocialMedia = [
556
+ {
557
+ link: "https://www.facebook.com/ClueMartApp",
558
+ name: "facebook" /* FACEBOOK */
547
559
  },
548
- ["NEW_VENDOR_REGISTRATION" /* NEW_VENDOR_REGISTRATION */]: {
549
- description: "5 points for new vendor registration (one-time reward)",
550
- value: 5
560
+ {
561
+ link: "https://www.instagram.com/cluemart_app",
562
+ name: "instagram" /* INSTAGRAM */
563
+ },
564
+ {
565
+ link: "https://www.tiktok.com/@cluemart",
566
+ name: "tiktok" /* TIKTOK */
567
+ },
568
+ {
569
+ link: "https://www.youtube.com/@ClueMart-App-NZ",
570
+ name: "youtube" /* YOUTUBE */
571
+ }
572
+ ];
573
+ var IOS_URL = "https://apps.apple.com/nz/app/cluemart/id6747251008";
574
+ var ANDROID_URL = "https://play.google.com/store/apps/details?id=com.timardex.cluemart";
575
+ var DEFAULT_RESOURCES_RETURN_LIMIT = 1e3;
576
+ var DEFAULT_RESOURCES_RETURN_OFFSET = 0;
577
+ var CLUEMART_MAIN_DOMAIN_URL = "https://cluemart.co.nz";
578
+ var rewardNiceNames = {
579
+ ["mystery_joy_box" /* MYSTERY_JOY_BOX */]: {
580
+ name: "Mystery Joy Box",
581
+ points: 250
582
+ },
583
+ ["mystery_squeeze_box" /* MYSTERY_SQUEEZE_BOX */]: {
584
+ name: "Mystery Squeeze Box",
585
+ points: 350
551
586
  },
552
- ["NEW_PARTNER_REGISTRATION" /* NEW_PARTNER_REGISTRATION */]: {
553
- description: "",
554
- value: 0
587
+ ["mystery_deluxe_box" /* MYSTERY_DELUXE_BOX */]: {
588
+ name: "Mystery Deluxe Box",
589
+ points: 500
555
590
  }
556
591
  };
557
- function createAffiliateReward(rewardType, createdAt) {
558
- const reward = AFFILIATE_REWARDS[rewardType];
559
- return {
560
- createdAt,
561
- deletedAt: null,
562
- redeemedAt: null,
563
- rewardDescription: reward.description,
564
- rewardType,
565
- rewardValue: reward.value,
566
- updatedAt: null
567
- };
592
+ var PostTypeLabels = {
593
+ ["market_faces" /* MARKET_FACES */]: "Market Faces",
594
+ ["clue_bites" /* CLUE_BITES */]: "Clue Bites",
595
+ ["play_and_win" /* PLAY_AND_WIN */]: "Play & Win"
596
+ };
597
+ var CM_SCHOOL_PROMO_CODE = `${PROMO_CODE_PREFIX}SCHOOL`;
598
+ var CM_AFFILIATE_PROMO_CODE = `${PROMO_CODE_PREFIX}AFFILIATE`;
599
+ function formatNZBankAccount(input) {
600
+ const digitsOnly = input.replaceAll(/\D/g, "");
601
+ const parts = [];
602
+ if (digitsOnly.length > 0) parts.push(digitsOnly.slice(0, 2));
603
+ if (digitsOnly.length > 2) parts.push(digitsOnly.slice(2, 6));
604
+ if (digitsOnly.length > 6) parts.push(digitsOnly.slice(6, 13));
605
+ if (digitsOnly.length > 13) parts.push(digitsOnly.slice(13, 15));
606
+ return parts.join("-");
568
607
  }
569
608
 
570
609
  // src/utils/resourceImage.ts
@@ -1850,8 +1889,178 @@ function getVendorEventRelationDateOptions(events) {
1850
1889
  function getVendorEventsEmptyMessage() {
1851
1890
  return "No events found.";
1852
1891
  }
1892
+
1893
+ // src/utils/affiliate.ts
1894
+ var AFFILIATE_PARTICIPANT_TYPE_LABELS = {
1895
+ ["INDIVIDUAL" /* INDIVIDUAL */]: "Individual",
1896
+ ["SOLE_TRADER" /* SOLE_TRADER */]: "Sole Trader",
1897
+ ["COMPANY" /* COMPANY */]: "Company"
1898
+ };
1899
+ var AFFILIATE_REWARDS = {
1900
+ ["NEW_EVENT_REGISTRATION" /* NEW_EVENT_REGISTRATION */]: {
1901
+ description: "10 points for new event registration (one-time reward)",
1902
+ value: 10
1903
+ },
1904
+ ["NEW_VENDOR_REGISTRATION" /* NEW_VENDOR_REGISTRATION */]: {
1905
+ description: "5 points for new vendor registration (one-time reward)",
1906
+ value: 5
1907
+ },
1908
+ ["ACTIVE_VENDOR_PRO_SUBSCRIPTION" /* ACTIVE_VENDOR_PRO_SUBSCRIPTION */]: {
1909
+ description: "3 points for active vendor pro subscription (monthly reward)",
1910
+ value: 3
1911
+ },
1912
+ ["ACTIVE_VENDOR_STANDARD_SUBSCRIPTION" /* ACTIVE_VENDOR_STANDARD_SUBSCRIPTION */]: {
1913
+ description: "1 point for active vendor standard subscription (monthly reward)",
1914
+ value: 1
1915
+ },
1916
+ ["ACTIVE_VENDOR_BONUS_REWARD" /* ACTIVE_VENDOR_BONUS_REWARD */]: {
1917
+ description: "5 bonus points for every 10th active vendor (one-time reward)",
1918
+ value: 5
1919
+ },
1920
+ ["ACTIVE_EVENT_WITH_VENDOR_REGISTRATIONS" /* ACTIVE_EVENT_WITH_VENDOR_REGISTRATIONS */]: {
1921
+ description: "40 points for active event with vendor registrations (one-time reward)",
1922
+ value: 40
1923
+ }
1924
+ };
1925
+ function createAffiliateReward(rewardType, createdAt) {
1926
+ const reward = AFFILIATE_REWARDS[rewardType];
1927
+ return {
1928
+ createdAt,
1929
+ redeemedAt: null,
1930
+ rewardDescription: reward.description,
1931
+ rewardType,
1932
+ rewardValue: reward.value
1933
+ };
1934
+ }
1935
+
1936
+ // src/utils/irdNumber.ts
1937
+ var PRIMARY_WEIGHTS = [3, 2, 7, 6, 5, 4, 3, 2];
1938
+ var SECONDARY_WEIGHTS = [7, 4, 3, 2, 5, 2, 7, 6];
1939
+ var IRD_MIN = 1e7;
1940
+ var IRD_MAX = 2e8;
1941
+ function calculateCheckDigit(baseDigits, weights) {
1942
+ const sum = [...baseDigits].reduce(
1943
+ (acc, digit, index) => acc + Number(digit) * weights[index],
1944
+ 0
1945
+ );
1946
+ const remainder = sum % 11;
1947
+ return remainder === 0 ? 0 : 11 - remainder;
1948
+ }
1949
+ function normalizeIrdNumber(value) {
1950
+ return value.replace(/\D/g, "");
1951
+ }
1952
+ function formatIrdNumber(input) {
1953
+ const digitsOnly = normalizeIrdNumber(input).slice(0, 9);
1954
+ const parts = [];
1955
+ if (digitsOnly.length > 0) parts.push(digitsOnly.slice(0, 3));
1956
+ if (digitsOnly.length > 3) parts.push(digitsOnly.slice(3, 6));
1957
+ if (digitsOnly.length > 6) parts.push(digitsOnly.slice(6, 9));
1958
+ return parts.join("-");
1959
+ }
1960
+ function isValidIrdNumber(value) {
1961
+ const digits = normalizeIrdNumber(value);
1962
+ if (!/^\d{8,9}$/.test(digits)) {
1963
+ return false;
1964
+ }
1965
+ const ird = Number(digits);
1966
+ if (ird < IRD_MIN || ird > IRD_MAX) {
1967
+ return false;
1968
+ }
1969
+ const padded = digits.padStart(9, "0");
1970
+ const baseDigits = padded.slice(0, -1);
1971
+ const checkDigit = Number(padded.slice(-1));
1972
+ let calculated = calculateCheckDigit(baseDigits, PRIMARY_WEIGHTS);
1973
+ if (calculated === 10) {
1974
+ calculated = calculateCheckDigit(baseDigits, SECONDARY_WEIGHTS);
1975
+ if (calculated === 10) {
1976
+ return false;
1977
+ }
1978
+ }
1979
+ return calculated === checkDigit;
1980
+ }
1981
+
1982
+ // src/utils/isTransientNetworkError.ts
1983
+ var TRANSIENT_NETWORK_PATTERNS = [
1984
+ /network connection was lost/i,
1985
+ /network request failed/i,
1986
+ /fetch failed/i,
1987
+ /failed to fetch/i,
1988
+ /internet connection appears to be offline/i,
1989
+ // Transport-layer timeouts only — avoid generic "timeout" (backend/query timeouts).
1990
+ /\b(request|connection|network)\s+timed\s+out\b/i,
1991
+ /\b(connect|read|write|socket)\s+timeout\b/i,
1992
+ /\bsocket\s+timed\s+out\b/i,
1993
+ /\betimedout\b/i,
1994
+ /\benotfound\b/i,
1995
+ /\beconnreset\b/i,
1996
+ /\beconnrefused\b/i
1997
+ ];
1998
+ function extractErrorMessage(err) {
1999
+ if (err instanceof Error) return err.message;
2000
+ if (typeof err === "string") return err;
2001
+ if (err && typeof err === "object") {
2002
+ const obj = err;
2003
+ if (typeof obj.message === "string") return obj.message;
2004
+ if (obj.networkError) return extractErrorMessage(obj.networkError);
2005
+ try {
2006
+ return JSON.stringify(err);
2007
+ } catch {
2008
+ return "[object]";
2009
+ }
2010
+ }
2011
+ if (err == null) return "";
2012
+ if (typeof err === "number" || typeof err === "boolean" || typeof err === "bigint") {
2013
+ return String(err);
2014
+ }
2015
+ if (typeof err === "symbol") return err.toString();
2016
+ return "";
2017
+ }
2018
+ function isTransientNetworkError(err) {
2019
+ const message = extractErrorMessage(err);
2020
+ return TRANSIENT_NETWORK_PATTERNS.some((pattern) => pattern.test(message));
2021
+ }
2022
+
2023
+ // src/utils/toUserFacingErrorMessage.ts
2024
+ var DEFAULT_USER_FACING_ERROR = "Something went wrong. Please try again.";
2025
+ var NETWORK_USER_FACING_ERROR = "Unable to connect. Please check your internet connection and try again.";
2026
+ var INTERNAL_ERROR_PATTERNS = [
2027
+ /connection\s*<monitor>/i,
2028
+ /\bmongo/i,
2029
+ /\b\d{1,3}(?:\.\d{1,3}){3}(?::\d+)?\b/,
2030
+ /\beconn(?:refused|reset|aborted)\b/i,
2031
+ /\betimedout\b/i,
2032
+ /\benotfound\b/i,
2033
+ /\bsocket hang up\b/i,
2034
+ /\binternal server error\b/i,
2035
+ /received status code 5\d\d/i,
2036
+ /\bat\s+\S+\s+\([^)]+:\d+:\d+\)/
2037
+ ];
2038
+ function isInternalErrorMessage(message) {
2039
+ return INTERNAL_ERROR_PATTERNS.some((pattern) => pattern.test(message));
2040
+ }
2041
+ function toUserFacingErrorMessage(error, fallback = DEFAULT_USER_FACING_ERROR) {
2042
+ const message = (error ?? "").trim();
2043
+ if (!message) return fallback;
2044
+ if (isTransientNetworkError(message)) {
2045
+ return NETWORK_USER_FACING_ERROR;
2046
+ }
2047
+ if (isInternalErrorMessage(message)) {
2048
+ return fallback;
2049
+ }
2050
+ return message;
2051
+ }
2052
+ function getErrorMessage(error, fallback = DEFAULT_USER_FACING_ERROR) {
2053
+ let raw;
2054
+ if (error instanceof Error) {
2055
+ raw = error.message;
2056
+ } else if (typeof error === "string") {
2057
+ raw = error;
2058
+ }
2059
+ return toUserFacingErrorMessage(raw, fallback);
2060
+ }
1853
2061
  // Annotate the CommonJS export names for ESM import in node:
1854
2062
  0 && (module.exports = {
2063
+ AFFILIATE_PARTICIPANT_TYPE_LABELS,
1855
2064
  AFFILIATE_REWARDS,
1856
2065
  ANDROID_URL,
1857
2066
  CLUEMART_MAIN_DOMAIN_URL,
@@ -1859,9 +2068,11 @@ function getVendorEventsEmptyMessage() {
1859
2068
  CM_SCHOOL_PROMO_CODE,
1860
2069
  DEFAULT_RESOURCES_RETURN_LIMIT,
1861
2070
  DEFAULT_RESOURCES_RETURN_OFFSET,
2071
+ DEFAULT_USER_FACING_ERROR,
1862
2072
  EVENT_DATE_STATUS_PERIOD_MAP,
1863
2073
  IOS_URL,
1864
2074
  KNOWN_EVENT_SCHEDULE_STATUSES,
2075
+ NETWORK_USER_FACING_ERROR,
1865
2076
  PostTypeLabels,
1866
2077
  SCHOOL_MAX_STUDENT_COUNT,
1867
2078
  SCHOOL_MIN_STUDENT_COUNT,
@@ -1886,11 +2097,14 @@ function getVendorEventsEmptyMessage() {
1886
2097
  filterVendorEventsBySelectedDate,
1887
2098
  findEventDateTimeByIsoDate,
1888
2099
  formatDate,
2100
+ formatIrdNumber,
2101
+ formatNZBankAccount,
1889
2102
  formatTimestamp,
1890
2103
  fromCalendarIsoDate,
1891
2104
  futureTimePeriods,
1892
2105
  getAllowedEventDateStatuses,
1893
2106
  getCurrentAndFutureDates,
2107
+ getErrorMessage,
1894
2108
  getEventCalendarIsoDates,
1895
2109
  getEventDatesWithStallholders,
1896
2110
  getEventScheduleStatusLabel,
@@ -1908,12 +2122,16 @@ function getVendorEventsEmptyMessage() {
1908
2122
  getVendorEventsEmptyMessage,
1909
2123
  hasMatchingEventDate,
1910
2124
  isFutureDatesBeforeThreshold,
2125
+ isInternalErrorMessage,
1911
2126
  isIsoDateString,
1912
2127
  isResourceImageActive,
2128
+ isTransientNetworkError,
2129
+ isValidIrdNumber,
1913
2130
  licenseNiceNames,
1914
2131
  mapArrayToOptions,
1915
2132
  matchesCategory,
1916
2133
  matchesSelectedDate,
2134
+ normalizeIrdNumber,
1917
2135
  normalizeResourceImage,
1918
2136
  normalizeUrl,
1919
2137
  nzStartOfDay,
@@ -1929,6 +2147,7 @@ function getVendorEventsEmptyMessage() {
1929
2147
  timeFormat,
1930
2148
  toCalendarIsoDate,
1931
2149
  toNZTime,
2150
+ toUserFacingErrorMessage,
1932
2151
  truncateText
1933
2152
  });
1934
2153
  //# sourceMappingURL=index.cjs.map