@timardex/cluemart-shared 1.2.27 → 1.2.29

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 (52) hide show
  1. package/dist/ad-Crq-z5Wt.d.mts +69 -0
  2. package/dist/ad-DHetF-th.d.ts +69 -0
  3. package/dist/{auth-BVGs-5Vm.d.mts → auth-Ci6Uskch.d.mts} +1 -1
  4. package/dist/{auth-BhUIvvZ2.d.ts → auth-CzEdRDf1.d.ts} +1 -1
  5. package/dist/chunk-BO3HICLR.mjs +24 -0
  6. package/dist/chunk-BO3HICLR.mjs.map +1 -0
  7. package/dist/chunk-CQ7TCXMI.mjs +68 -0
  8. package/dist/chunk-CQ7TCXMI.mjs.map +1 -0
  9. package/dist/formFields/index.d.mts +2 -1
  10. package/dist/formFields/index.d.ts +2 -1
  11. package/dist/{global-BA84KF8J.d.ts → global-2Jk7sRkL.d.ts} +128 -2
  12. package/dist/{global-BEqzo5Z2.d.mts → global-DWuTxnJ8.d.mts} +128 -2
  13. package/dist/graphql/index.d.mts +5 -3
  14. package/dist/graphql/index.d.ts +5 -3
  15. package/dist/hooks/index.d.mts +5 -3
  16. package/dist/hooks/index.d.ts +5 -3
  17. package/dist/hooks/index.mjs +5 -5
  18. package/dist/index.cjs +1132 -17
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.mts +695 -300
  21. package/dist/index.d.ts +695 -300
  22. package/dist/index.mjs +1117 -17
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/mongoose/index.cjs +1068 -0
  25. package/dist/mongoose/index.cjs.map +1 -0
  26. package/dist/mongoose/index.d.mts +318 -0
  27. package/dist/mongoose/index.d.ts +318 -0
  28. package/dist/mongoose/index.mjs +855 -0
  29. package/dist/mongoose/index.mjs.map +1 -0
  30. package/dist/resourceActivities-B4roVKtQ.d.ts +34 -0
  31. package/dist/resourceActivities-BIjtlOGp.d.mts +34 -0
  32. package/dist/service/index.cjs +336 -0
  33. package/dist/service/index.cjs.map +1 -0
  34. package/dist/service/index.d.mts +27 -0
  35. package/dist/service/index.d.ts +27 -0
  36. package/dist/service/index.mjs +214 -0
  37. package/dist/service/index.mjs.map +1 -0
  38. package/dist/types/index.cjs +13 -2
  39. package/dist/types/index.cjs.map +1 -1
  40. package/dist/types/index.d.mts +6 -4
  41. package/dist/types/index.d.ts +6 -4
  42. package/dist/types/index.mjs +6 -11
  43. package/dist/types/index.mjs.map +1 -1
  44. package/dist/user-DbEEY7fv.d.ts +64 -0
  45. package/dist/user-OPY5EOqR.d.mts +64 -0
  46. package/dist/utils/index.d.mts +2 -1
  47. package/dist/utils/index.d.ts +2 -1
  48. package/package.json +13 -1
  49. package/dist/ad-Bv5fLkN0.d.mts +0 -129
  50. package/dist/ad-DDPNpx02.d.ts +0 -129
  51. package/dist/resourceActivities-DWC-Btmf.d.ts +0 -96
  52. package/dist/resourceActivities-DoLx4lPo.d.mts +0 -96
package/dist/index.cjs CHANGED
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.ts
31
31
  var index_exports = {};
32
32
  __export(index_exports, {
33
+ CategorySchema: () => CategorySchema,
33
34
  EnumActivity: () => EnumActivity,
34
35
  EnumAdShowOn: () => EnumAdShowOn,
35
36
  EnumAdStatus: () => EnumAdStatus,
@@ -43,6 +44,7 @@ __export(index_exports, {
43
44
  EnumNotificationType: () => EnumNotificationType,
44
45
  EnumOSPlatform: () => EnumOSPlatform,
45
46
  EnumPaymentMethod: () => EnumPaymentMethod,
47
+ EnumPubSubEvents: () => EnumPubSubEvents,
46
48
  EnumRegions: () => EnumRegions,
47
49
  EnumRelationResource: () => EnumRelationResource,
48
50
  EnumResourceType: () => EnumResourceType,
@@ -51,20 +53,28 @@ __export(index_exports, {
51
53
  EnumUserRole: () => EnumUserRole,
52
54
  EnumVendorType: () => EnumVendorType,
53
55
  ImageTypeEnum: () => ImageTypeEnum,
56
+ ParticipantSchema: () => ParticipantSchema,
57
+ RelationTypeSchema: () => RelationTypeSchema,
58
+ ResourceImageTypeSchema: () => ResourceImageTypeSchema,
54
59
  SAVED_EMAIL_KEY: () => SAVED_EMAIL_KEY,
55
60
  SAVED_PASSWORD_KEY: () => SAVED_PASSWORD_KEY,
56
61
  SAVED_REFRESH_TOKEN_KEY: () => SAVED_REFRESH_TOKEN_KEY,
57
62
  SAVED_TOKEN_KEY: () => SAVED_TOKEN_KEY,
63
+ SocialMediaTypeSchema: () => SocialMediaTypeSchema,
64
+ StallTypeSchema: () => StallTypeSchema,
58
65
  USER_STORAGE_KEY: () => USER_STORAGE_KEY,
59
66
  availableCategories: () => availableCategories,
60
67
  availableCityOptions: () => availableCityOptions,
61
68
  availableRegionOptions: () => availableRegionOptions,
62
69
  availableRegionTypes: () => availableRegionTypes,
63
70
  availableTagTypes: () => availableTagTypes,
71
+ baseResourceFields: () => baseResourceFields,
64
72
  capitalizeFirstLetter: () => capitalizeFirstLetter,
65
73
  categoryColors: () => categoryColors,
66
74
  companyContactFields: () => companyContactFields,
75
+ connectToDatabase: () => connectToDatabase,
67
76
  contactUsFields: () => contactUsFields,
77
+ createNotifications: () => createNotifications,
68
78
  darkColors: () => darkColors,
69
79
  dateFormat: () => dateFormat,
70
80
  defaultEventFormValues: () => defaultEventFormValues,
@@ -91,20 +101,25 @@ __export(index_exports, {
91
101
  mapBaseResourceTypeToFormData: () => mapBaseResourceTypeToFormData,
92
102
  normalizeUrl: () => normalizeUrl,
93
103
  packagingOptions: () => packagingOptions,
104
+ partnersSchema: () => partnersSchema,
94
105
  paymentMethodOptions: () => paymentMethodOptions,
95
106
  producedIngOptions: () => producedIngOptions,
96
107
  productLabelGroups: () => productLabelGroups,
97
108
  profileFields: () => profileFields,
109
+ publishNotificationEvents: () => publishNotificationEvents,
98
110
  registerFields: () => registerFields,
111
+ relationDatesSchema: () => relationDatesSchema,
99
112
  removeTypename: () => removeTypename,
100
113
  requestPasswordResetFields: () => requestPasswordResetFields,
101
114
  requirementsOptions: () => requirementsOptions,
102
115
  resetPasswordFields: () => resetPasswordFields,
116
+ sendPushNotification: () => sendPushNotification,
103
117
  socialMediaFields: () => socialMediaFields,
104
118
  sortDatesChronologically: () => sortDatesChronologically,
105
119
  stallTypeOptions: () => stallTypeOptions,
106
120
  statusOptions: () => statusOptions,
107
121
  tagOptions: () => tagOptions,
122
+ termsAgreementSchema: () => termsAgreementSchema,
108
123
  testersFields: () => testersFields,
109
124
  timeFormat: () => timeFormat,
110
125
  truncateText: () => truncateText,
@@ -4929,7 +4944,7 @@ var socialMediaSchema = yup.object({
4929
4944
  is: (name) => !!name,
4930
4945
  // If name has a value
4931
4946
  then: () => normalizedUrlTransform().required("Link is required when name is set").url("Link must be a valid URL").label("Social Media Link"),
4932
- otherwise: (schema) => schema.notRequired()
4947
+ otherwise: (schema11) => schema11.notRequired()
4933
4948
  })
4934
4949
  });
4935
4950
  var globalResourceSchema = yup.object().shape({
@@ -5002,21 +5017,21 @@ var paymentInfoSchema = yup2.object({
5002
5017
  paymentMethod: yup2.mixed().oneOf(Object.values(EnumPaymentMethod)).required("Please select a Payment method"),
5003
5018
  accountHolderName: yup2.string().when("paymentMethod", {
5004
5019
  is: "bank_transfer" /* BANK_TRANSFER */,
5005
- then: (schema) => schema.required("Account holder name is required for bank transfer").trim(),
5006
- otherwise: (schema) => schema.notRequired()
5020
+ then: (schema11) => schema11.required("Account holder name is required for bank transfer").trim(),
5021
+ otherwise: (schema11) => schema11.notRequired()
5007
5022
  }),
5008
5023
  accountNumber: yup2.string().when("paymentMethod", {
5009
5024
  is: "bank_transfer" /* BANK_TRANSFER */,
5010
- then: (schema) => schema.required("Account number is required for bank transfer").matches(
5025
+ then: (schema11) => schema11.required("Account number is required for bank transfer").matches(
5011
5026
  nzBankAccountRegex,
5012
5027
  "Account number must be in format: XX-XXXX-XXXXXXX-XX"
5013
5028
  ).trim(),
5014
- otherwise: (schema) => schema.notRequired()
5029
+ otherwise: (schema11) => schema11.notRequired()
5015
5030
  }),
5016
5031
  link: yup2.string().when("paymentMethod", {
5017
5032
  is: (val) => val !== "bank_transfer" /* BANK_TRANSFER */,
5018
5033
  then: () => normalizedUrlTransform().url("Link must be a valid URL").required("Link is required for PayPal/Stripe"),
5019
- otherwise: (schema) => schema.notRequired()
5034
+ otherwise: (schema11) => schema11.notRequired()
5020
5035
  })
5021
5036
  });
5022
5037
  var eventInfoSchema = yup2.object().shape({
@@ -5195,7 +5210,7 @@ var adSchema = yup7.object().shape({
5195
5210
  return endDate > now;
5196
5211
  }).when("start", {
5197
5212
  is: (val) => val && val.length > 0,
5198
- then: (schema) => schema.test(
5213
+ then: (schema11) => schema11.test(
5199
5214
  "is-after-start",
5200
5215
  "End date must be after start date",
5201
5216
  function(value) {
@@ -6165,6 +6180,1101 @@ function useAdForm(data) {
6165
6180
  };
6166
6181
  }
6167
6182
 
6183
+ // src/mongoose/Ad.ts
6184
+ var import_mongoose4 = __toESM(require("mongoose"));
6185
+
6186
+ // src/types/global.ts
6187
+ var EnumPubSubEvents = /* @__PURE__ */ ((EnumPubSubEvents2) => {
6188
+ EnumPubSubEvents2["GET_CHAT_MESSAGE"] = "GET_CHAT_MESSAGE";
6189
+ EnumPubSubEvents2["GET_NOTIFICATIONS"] = "GET_NOTIFICATIONS";
6190
+ EnumPubSubEvents2["GET_NOTIFICATIONS_COUNT"] = "GET_NOTIFICATIONS_COUNT";
6191
+ EnumPubSubEvents2["USER_TYPING"] = "USER_TYPING";
6192
+ return EnumPubSubEvents2;
6193
+ })(EnumPubSubEvents || {});
6194
+
6195
+ // src/types/resourceActivities.ts
6196
+ var EnumActivity = /* @__PURE__ */ ((EnumActivity2) => {
6197
+ EnumActivity2["FAVORITE"] = "FAVORITE";
6198
+ EnumActivity2["GOING"] = "GOING";
6199
+ EnumActivity2["INTERESTED"] = "INTERESTED";
6200
+ EnumActivity2["PRESENT"] = "PRESENT";
6201
+ EnumActivity2["VIEW"] = "VIEW";
6202
+ return EnumActivity2;
6203
+ })(EnumActivity || {});
6204
+
6205
+ // src/mongoose/global.ts
6206
+ var import_mongoose3 = __toESM(require("mongoose"));
6207
+
6208
+ // src/mongoose/Relation.ts
6209
+ var import_mongoose2 = __toESM(require("mongoose"));
6210
+
6211
+ // src/mongoose/event/EventInfo.ts
6212
+ var import_mongoose = __toESM(require("mongoose"));
6213
+ var MongooseSchema = import_mongoose.default.Schema;
6214
+ var StallTypeSchema = new MongooseSchema(
6215
+ {
6216
+ electricity: {
6217
+ price: { required: false, type: Number },
6218
+ selected: { required: false, type: Boolean }
6219
+ },
6220
+ label: { required: false, type: String },
6221
+ price: { required: false, type: Number },
6222
+ stallCapacity: { required: false, type: Number }
6223
+ },
6224
+ {
6225
+ _id: false
6226
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6227
+ }
6228
+ );
6229
+ var dateTimeSchema2 = new MongooseSchema(
6230
+ {
6231
+ endDate: { required: true, type: String },
6232
+ endTime: { required: true, type: String },
6233
+ stallTypes: [StallTypeSchema],
6234
+ startDate: { required: true, type: String },
6235
+ startTime: { required: true, type: String }
6236
+ },
6237
+ { _id: false }
6238
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6239
+ );
6240
+ var paymentInfoSchema2 = new MongooseSchema(
6241
+ {
6242
+ accountHolderName: { required: false, type: String },
6243
+ accountNumber: { required: false, type: String },
6244
+ link: { required: false, type: String },
6245
+ paymentMethod: {
6246
+ enum: Object.values(EnumPaymentMethod),
6247
+ required: true,
6248
+ type: String
6249
+ }
6250
+ },
6251
+ { _id: false }
6252
+ // Prevents Mongoose from creating an additional _id field
6253
+ );
6254
+ var requirementsSchema = new MongooseSchema(
6255
+ {
6256
+ category: { required: true, type: String },
6257
+ label: { required: true, type: String },
6258
+ value: { required: true, type: Boolean }
6259
+ },
6260
+ {
6261
+ _id: false
6262
+ // Prevents Mongoose from creating an additional _id field for
6263
+ }
6264
+ );
6265
+ var schema = new MongooseSchema(
6266
+ {
6267
+ applicationDeadlineHours: { required: true, type: Number },
6268
+ dateTime: [dateTimeSchema2],
6269
+ eventId: {
6270
+ ref: "Event",
6271
+ required: false,
6272
+ type: import_mongoose.default.Schema.Types.ObjectId
6273
+ },
6274
+ packInTime: { required: true, type: Number },
6275
+ paymentDueHours: { required: true, type: Number },
6276
+ paymentInfo: [paymentInfoSchema2],
6277
+ requirements: [requirementsSchema]
6278
+ },
6279
+ { timestamps: true }
6280
+ );
6281
+ var EventInfoModel = import_mongoose.default.model("EventInfo", schema);
6282
+
6283
+ // src/mongoose/Relation.ts
6284
+ var MongooseSchema2 = import_mongoose2.default.Schema;
6285
+ var relationDatesSchema = new MongooseSchema2(
6286
+ {
6287
+ lastUpdateBy: {
6288
+ resourceId: { required: false, type: String },
6289
+ userEmail: { required: false, type: String }
6290
+ },
6291
+ paymentReference: { required: false, type: String },
6292
+ stallType: StallTypeSchema,
6293
+ startDate: { required: false, type: String },
6294
+ startTime: { required: false, type: String },
6295
+ status: {
6296
+ enum: Object.values(EnumInviteStatus),
6297
+ required: false,
6298
+ type: String
6299
+ }
6300
+ },
6301
+ { _id: false }
6302
+ );
6303
+ var RelationTypeSchema = new MongooseSchema2(
6304
+ {
6305
+ active: { default: true, required: true, type: Boolean },
6306
+ chatId: {
6307
+ ref: "Chat",
6308
+ required: true,
6309
+ type: import_mongoose2.default.Schema.Types.ObjectId
6310
+ },
6311
+ deletedAt: { default: null, required: false, type: Date },
6312
+ eventId: {
6313
+ ref: "Event",
6314
+ required: true,
6315
+ type: import_mongoose2.default.Schema.Types.ObjectId
6316
+ },
6317
+ lastUpdateBy: {
6318
+ enum: Object.values(EnumResourceType),
6319
+ required: true,
6320
+ type: String
6321
+ },
6322
+ relationDates: [relationDatesSchema],
6323
+ relationType: {
6324
+ enum: Object.values(EnumRelationResource),
6325
+ required: true,
6326
+ type: String
6327
+ },
6328
+ vendorId: {
6329
+ ref: "Vendor",
6330
+ required: true,
6331
+ type: import_mongoose2.default.Schema.Types.ObjectId
6332
+ }
6333
+ },
6334
+ { timestamps: true }
6335
+ );
6336
+ RelationTypeSchema.index({
6337
+ "relationDates.startDate": 1,
6338
+ "relationDates.startTime": 1,
6339
+ "relationDates.status": 1
6340
+ });
6341
+ var RelationModel = import_mongoose2.default.model(
6342
+ "Relation",
6343
+ RelationTypeSchema
6344
+ );
6345
+
6346
+ // src/mongoose/global.ts
6347
+ var MongooseSchema3 = import_mongoose3.default.Schema;
6348
+ var OwnerTypeSchema = new MongooseSchema3(
6349
+ {
6350
+ email: { required: true, type: String },
6351
+ userId: {
6352
+ ref: "User",
6353
+ required: true,
6354
+ type: import_mongoose3.default.Schema.Types.ObjectId
6355
+ }
6356
+ },
6357
+ { _id: false }
6358
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6359
+ );
6360
+ var SocialMediaTypeSchema = new MongooseSchema3(
6361
+ {
6362
+ link: { required: true, type: String },
6363
+ name: { required: true, type: String }
6364
+ },
6365
+ { _id: false }
6366
+ // Prevents Mongoose from creating an additional _id field
6367
+ );
6368
+ var ResourceImageTypeSchema = new MongooseSchema3(
6369
+ {
6370
+ source: { required: false, type: String },
6371
+ title: { required: false, type: String }
6372
+ },
6373
+ { _id: false }
6374
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6375
+ );
6376
+ var SubCategorySchema = new MongooseSchema3(
6377
+ {
6378
+ id: { required: false, type: String },
6379
+ items: [
6380
+ {
6381
+ id: { required: false, type: String },
6382
+ name: { required: false, type: String }
6383
+ }
6384
+ ],
6385
+ name: { required: false, type: String }
6386
+ },
6387
+ { _id: false }
6388
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6389
+ );
6390
+ var CategorySchema = new MongooseSchema3(
6391
+ {
6392
+ id: { required: true, type: String },
6393
+ name: { required: true, type: String },
6394
+ subcategories: [SubCategorySchema]
6395
+ },
6396
+ { _id: false }
6397
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6398
+ );
6399
+ var PosterUsageTypeSchema = new MongooseSchema3(
6400
+ {
6401
+ count: { default: 0, required: false, type: Number },
6402
+ month: { required: false, type: String }
6403
+ },
6404
+ { _id: false }
6405
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6406
+ );
6407
+ var partnersSchema = new MongooseSchema3(
6408
+ {
6409
+ email: { required: false, type: String },
6410
+ licence: {
6411
+ enum: Object.values(EnumUserLicence),
6412
+ required: false,
6413
+ type: String
6414
+ },
6415
+ resourceId: {
6416
+ required: false,
6417
+ type: String
6418
+ },
6419
+ resourceType: {
6420
+ enum: Object.values(EnumResourceType),
6421
+ required: false,
6422
+ type: String
6423
+ }
6424
+ },
6425
+ { _id: false }
6426
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6427
+ );
6428
+ var ContactDetailsSchema = new MongooseSchema3(
6429
+ {
6430
+ email: { required: false, type: String },
6431
+ landlinePhone: { required: false, type: String },
6432
+ mobilePhone: { required: false, type: String }
6433
+ },
6434
+ { _id: false }
6435
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6436
+ );
6437
+ var termsAgreementSchema = new MongooseSchema3(
6438
+ {
6439
+ appBuildNumber: { required: true, type: String },
6440
+ appId: { required: true, type: String },
6441
+ appVersion: { required: true, type: String },
6442
+ brand: { required: true, type: String },
6443
+ deviceName: { required: true, type: String },
6444
+ installationId: { required: true, type: String },
6445
+ manufacturer: { required: true, type: String },
6446
+ modelName: { required: true, type: String },
6447
+ osName: { required: true, type: String },
6448
+ osVersion: { required: true, type: String },
6449
+ termVersion: { required: true, type: String },
6450
+ timestamp: { required: true, type: String }
6451
+ },
6452
+ { _id: false }
6453
+ );
6454
+ var resourceRelationsSchema = new MongooseSchema3(
6455
+ {
6456
+ relationDates: {
6457
+ default: [],
6458
+ required: false,
6459
+ type: [relationDatesSchema]
6460
+ },
6461
+ relationId: {
6462
+ ref: "Relation",
6463
+ required: false,
6464
+ type: import_mongoose3.default.Schema.Types.ObjectId
6465
+ }
6466
+ },
6467
+ { _id: false }
6468
+ );
6469
+ var baseResourceFields = {
6470
+ active: { default: false, required: true, type: Boolean },
6471
+ adIds: {
6472
+ ref: "Ad",
6473
+ required: false,
6474
+ type: [import_mongoose3.default.Schema.Types.ObjectId]
6475
+ },
6476
+ contactDetails: ContactDetailsSchema,
6477
+ cover: ResourceImageTypeSchema,
6478
+ deletedAt: { default: null, required: false, type: Date },
6479
+ description: { required: true, type: String },
6480
+ images: [ResourceImageTypeSchema],
6481
+ logo: ResourceImageTypeSchema,
6482
+ name: { required: true, type: String },
6483
+ owner: OwnerTypeSchema,
6484
+ partners: {
6485
+ required: false,
6486
+ type: [partnersSchema]
6487
+ },
6488
+ posterUsage: PosterUsageTypeSchema,
6489
+ promoCodes: { required: false, type: [String] },
6490
+ region: { required: true, type: String },
6491
+ relations: {
6492
+ default: [],
6493
+ required: false,
6494
+ type: [resourceRelationsSchema]
6495
+ },
6496
+ socialMedia: [SocialMediaTypeSchema],
6497
+ termsAgreement: termsAgreementSchema
6498
+ };
6499
+
6500
+ // src/mongoose/Ad.ts
6501
+ var MongooseSchema4 = import_mongoose4.default.Schema;
6502
+ var schema2 = new MongooseSchema4(
6503
+ {
6504
+ active: { default: true, type: Boolean },
6505
+ adStyle: {
6506
+ default: "Bloom" /* BLOOM */,
6507
+ enum: Object.values(EnumAdStyle),
6508
+ required: true,
6509
+ type: String
6510
+ },
6511
+ adType: {
6512
+ default: "Sponsored" /* SPONSORED */,
6513
+ enum: Object.values(EnumAdType),
6514
+ required: true,
6515
+ type: String
6516
+ },
6517
+ // TODO: similar to ViewSchema
6518
+ clicks: { default: 0, required: true, type: Number },
6519
+ clui: { required: false, type: String },
6520
+ end: { required: true, type: Date },
6521
+ // TODO: similar to ViewSchema
6522
+ impressions: { default: 0, required: true, type: Number },
6523
+ resourceCover: { required: true, type: String },
6524
+ resourceDescription: { required: true, type: String },
6525
+ resourceId: { required: true, type: String },
6526
+ resourceLogo: { required: false, type: String },
6527
+ resourceName: { required: true, type: String },
6528
+ resourceRegion: { required: true, type: String },
6529
+ resourceType: {
6530
+ enum: Object.values(EnumResourceType),
6531
+ required: true,
6532
+ type: String
6533
+ },
6534
+ showOn: {
6535
+ default: "Front_page" /* FRONT_PAGE */,
6536
+ enum: Object.values(EnumAdShowOn),
6537
+ required: true,
6538
+ type: String
6539
+ },
6540
+ socialMedia: [SocialMediaTypeSchema],
6541
+ start: { required: true, type: Date },
6542
+ status: {
6543
+ default: "Active" /* ACTIVE */,
6544
+ enum: Object.values(EnumAdStatus),
6545
+ required: true,
6546
+ type: String
6547
+ },
6548
+ targetRegion: { required: false, type: String }
6549
+ },
6550
+ {
6551
+ timestamps: true
6552
+ }
6553
+ );
6554
+ schema2.index({
6555
+ end: 1,
6556
+ start: 1,
6557
+ status: 1
6558
+ });
6559
+ var AdModel = import_mongoose4.default.model("Ad", schema2);
6560
+
6561
+ // src/mongoose/Chat.ts
6562
+ var import_mongoose5 = __toESM(require("mongoose"));
6563
+ var MongooseSchema5 = import_mongoose5.default.Schema;
6564
+ var MessageSchema = new MongooseSchema5(
6565
+ {
6566
+ content: { required: true, type: String },
6567
+ senderAvatar: { required: false, type: String },
6568
+ senderId: {
6569
+ ref: "User",
6570
+ required: true,
6571
+ type: import_mongoose5.default.Schema.Types.ObjectId
6572
+ },
6573
+ senderName: { required: true, type: String }
6574
+ },
6575
+ { timestamps: true }
6576
+ );
6577
+ var ParticipantSchema = new MongooseSchema5(
6578
+ {
6579
+ active: { default: true, required: true, type: Boolean },
6580
+ email: { required: true, type: String },
6581
+ userId: {
6582
+ ref: "User",
6583
+ required: true,
6584
+ type: import_mongoose5.default.Schema.Types.ObjectId
6585
+ }
6586
+ },
6587
+ { _id: false }
6588
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6589
+ );
6590
+ var ChatSchema = new MongooseSchema5(
6591
+ {
6592
+ active: { default: true, required: true, type: Boolean },
6593
+ chatName: { required: true, type: String },
6594
+ chatType: {
6595
+ enum: Object.values(EnumChatType),
6596
+ required: true,
6597
+ type: String
6598
+ },
6599
+ deletedAt: { default: null, required: false, type: Date },
6600
+ messages: [MessageSchema],
6601
+ participants: [ParticipantSchema],
6602
+ resourceInfo: {
6603
+ eventId: {
6604
+ ref: "Event",
6605
+ required: false,
6606
+ type: import_mongoose5.default.Schema.Types.ObjectId
6607
+ },
6608
+ vendorId: {
6609
+ ref: "Vendor",
6610
+ required: false,
6611
+ type: import_mongoose5.default.Schema.Types.ObjectId
6612
+ }
6613
+ }
6614
+ },
6615
+ {
6616
+ timestamps: true
6617
+ }
6618
+ );
6619
+ var ChatModel = import_mongoose5.default.model("Chat", ChatSchema);
6620
+
6621
+ // src/mongoose/Notification.ts
6622
+ var import_mongoose6 = __toESM(require("mongoose"));
6623
+ var MongooseSchema6 = import_mongoose6.default.Schema;
6624
+ var schema3 = new MongooseSchema6(
6625
+ {
6626
+ data: {
6627
+ resourceId: { required: true, type: String },
6628
+ resourceName: { required: true, type: String },
6629
+ resourceType: {
6630
+ enum: Object.values(EnumNotificationResourceType),
6631
+ required: true,
6632
+ type: String
6633
+ }
6634
+ },
6635
+ isRead: { default: false, index: true, required: true, type: Boolean },
6636
+ message: { required: true, type: String },
6637
+ title: { required: true, type: String },
6638
+ type: {
6639
+ default: "system" /* SYSTEM */,
6640
+ enum: Object.values(EnumNotificationType),
6641
+ required: true,
6642
+ type: String
6643
+ },
6644
+ userId: {
6645
+ ref: "User",
6646
+ required: true,
6647
+ type: import_mongoose6.default.Schema.Types.ObjectId
6648
+ }
6649
+ },
6650
+ { timestamps: true }
6651
+ );
6652
+ schema3.index({ isRead: 1, userId: 1 });
6653
+ schema3.index({ createdAt: -1, userId: 1 });
6654
+ var NotificationModel = import_mongoose6.default.model(
6655
+ "Notification",
6656
+ schema3
6657
+ );
6658
+ var Notification_default = NotificationModel;
6659
+
6660
+ // src/mongoose/PushToken.ts
6661
+ var import_mongoose7 = __toESM(require("mongoose"));
6662
+ var MongooseSchema7 = import_mongoose7.default.Schema;
6663
+ var schema4 = new MongooseSchema7(
6664
+ {
6665
+ platform: {
6666
+ enum: Object.values(EnumOSPlatform),
6667
+ required: true,
6668
+ type: String
6669
+ },
6670
+ token: { required: true, type: String },
6671
+ userId: { required: true, type: import_mongoose7.default.Schema.Types.ObjectId }
6672
+ },
6673
+ { timestamps: true }
6674
+ );
6675
+ var PushTokenModel = import_mongoose7.default.model("PushToken", schema4);
6676
+ var PushToken_default = PushTokenModel;
6677
+
6678
+ // src/mongoose/ResourceActivity.ts
6679
+ var import_mongoose8 = __toESM(require("mongoose"));
6680
+ var MongooseSchema8 = import_mongoose8.default.Schema;
6681
+ var ActivitySchema = new MongooseSchema8(
6682
+ {
6683
+ activityType: {
6684
+ enum: Object.values(EnumActivity),
6685
+ required: true,
6686
+ type: String
6687
+ },
6688
+ location: {
6689
+ coordinates: {
6690
+ required: false,
6691
+ type: [Number]
6692
+ },
6693
+ type: {
6694
+ default: "Point",
6695
+ enum: ["Point"],
6696
+ required: false,
6697
+ type: String
6698
+ }
6699
+ },
6700
+ startDate: { required: false, type: String },
6701
+ startTime: { required: false, type: String },
6702
+ timestamp: { default: Date.now, type: Date },
6703
+ userAgent: {
6704
+ enum: Object.values(EnumOSPlatform),
6705
+ required: true,
6706
+ type: String
6707
+ },
6708
+ userId: { required: false, type: String }
6709
+ },
6710
+ { _id: false }
6711
+ );
6712
+ var schema5 = new MongooseSchema8(
6713
+ {
6714
+ activity: { default: [], type: [ActivitySchema] },
6715
+ resourceId: { required: true, type: String },
6716
+ resourceType: {
6717
+ enum: Object.values(EnumResourceType),
6718
+ required: true,
6719
+ type: String
6720
+ }
6721
+ },
6722
+ { timestamps: true }
6723
+ );
6724
+ schema5.index({ resourceId: 1, resourceType: 1 }, { unique: true });
6725
+ schema5.index({ "views.location": "2dsphere" });
6726
+ var ResourceActivityModel = import_mongoose8.default.model("ResourceActivity", schema5);
6727
+
6728
+ // src/mongoose/Testers.ts
6729
+ var import_mongoose9 = __toESM(require("mongoose"));
6730
+ var MongooseSchema9 = import_mongoose9.default.Schema;
6731
+ var TesterSchema = new MongooseSchema9(
6732
+ {
6733
+ active: { default: false, required: true, type: Boolean },
6734
+ categories: [CategorySchema],
6735
+ companyName: { required: true, type: String },
6736
+ email: { required: true, type: String },
6737
+ firstName: { required: true, type: String },
6738
+ lastName: { required: true, type: String },
6739
+ osType: {
6740
+ enum: Object.values(EnumOSPlatform),
6741
+ required: true,
6742
+ type: String
6743
+ },
6744
+ region: { required: true, type: String },
6745
+ resourceType: {
6746
+ enum: Object.values(EnumResourceType),
6747
+ required: true,
6748
+ type: String
6749
+ }
6750
+ },
6751
+ {
6752
+ timestamps: true
6753
+ }
6754
+ );
6755
+ var TesterModel = import_mongoose9.default.model("Tester", TesterSchema);
6756
+
6757
+ // src/mongoose/User.ts
6758
+ var import_mongoose10 = __toESM(require("mongoose"));
6759
+ var MongooseSchema10 = import_mongoose10.default.Schema;
6760
+ var userActivityEventSchema = new MongooseSchema10(
6761
+ {
6762
+ resourceId: {
6763
+ ref: "Event",
6764
+ required: false,
6765
+ type: import_mongoose10.default.Schema.Types.ObjectId
6766
+ },
6767
+ startDate: { required: false, type: String },
6768
+ startTime: { required: false, type: String }
6769
+ },
6770
+ { _id: false }
6771
+ );
6772
+ var userActivityFavouritesSchema = new MongooseSchema10(
6773
+ {
6774
+ events: {
6775
+ ref: "Event",
6776
+ required: false,
6777
+ type: [import_mongoose10.default.Schema.Types.ObjectId]
6778
+ },
6779
+ vendors: {
6780
+ ref: "Vendor",
6781
+ required: false,
6782
+ type: [import_mongoose10.default.Schema.Types.ObjectId]
6783
+ }
6784
+ },
6785
+ { _id: false }
6786
+ );
6787
+ var schema6 = new MongooseSchema10(
6788
+ {
6789
+ active: { default: false, required: true, type: Boolean },
6790
+ avatar: ResourceImageTypeSchema,
6791
+ deletedAt: { default: null, required: false, type: Date },
6792
+ email: { required: true, type: String },
6793
+ events: {
6794
+ ref: "Event",
6795
+ required: false,
6796
+ type: [import_mongoose10.default.Schema.Types.ObjectId]
6797
+ },
6798
+ firstName: { required: true, type: String },
6799
+ isTester: { default: false, required: false, type: Boolean },
6800
+ lastName: { required: true, type: String },
6801
+ licences: {
6802
+ enum: Object.values(EnumUserLicence),
6803
+ required: false,
6804
+ type: [String]
6805
+ },
6806
+ partners: {
6807
+ required: false,
6808
+ type: [partnersSchema]
6809
+ },
6810
+ password: { required: true, type: String },
6811
+ platform: {
6812
+ enum: Object.values(EnumOSPlatform),
6813
+ required: false,
6814
+ type: String
6815
+ },
6816
+ preferredRegion: {
6817
+ required: true,
6818
+ type: String
6819
+ },
6820
+ refreshToken: {
6821
+ required: false,
6822
+ type: String
6823
+ },
6824
+ role: {
6825
+ default: "customer" /* CUSTOMER */,
6826
+ enum: Object.values(EnumUserRole),
6827
+ required: true,
6828
+ type: String
6829
+ },
6830
+ termsAgreement: termsAgreementSchema,
6831
+ userActivity: {
6832
+ favourites: {
6833
+ default: () => ({ events: [], vendors: [] }),
6834
+ type: userActivityFavouritesSchema
6835
+ },
6836
+ going: {
6837
+ events: [userActivityEventSchema]
6838
+ },
6839
+ interested: {
6840
+ events: [userActivityEventSchema]
6841
+ },
6842
+ present: {
6843
+ events: [userActivityEventSchema]
6844
+ }
6845
+ },
6846
+ vendor: {
6847
+ ref: "Vendor",
6848
+ required: false,
6849
+ type: import_mongoose10.default.Schema.Types.ObjectId
6850
+ }
6851
+ },
6852
+ { timestamps: true }
6853
+ );
6854
+ schema6.index({ "partners.email": 1 });
6855
+ var UserModel = import_mongoose10.default.model("User", schema6);
6856
+
6857
+ // src/mongoose/VerificationToken.ts
6858
+ var import_mongoose11 = __toESM(require("mongoose"));
6859
+ var MongooseSchema11 = import_mongoose11.default.Schema;
6860
+ var schema7 = new MongooseSchema11(
6861
+ {
6862
+ createdAt: {
6863
+ default: Date.now,
6864
+ expires: 24 * 60 * 60,
6865
+ // 24 hours in seconds (MongoDB TTL expects seconds)
6866
+ required: true,
6867
+ type: Date
6868
+ },
6869
+ // Token expires after 1 day
6870
+ email: { required: true, type: String },
6871
+ verificationToken: { required: true, type: String }
6872
+ },
6873
+ { timestamps: true }
6874
+ );
6875
+ var VerificationTokenModel = import_mongoose11.default.model(
6876
+ "VerificationToken",
6877
+ schema7
6878
+ );
6879
+
6880
+ // src/mongoose/vendor/Vendor.ts
6881
+ var import_mongoose12 = __toESM(require("mongoose"));
6882
+ var MongooseSchema12 = import_mongoose12.default.Schema;
6883
+ var MenuTypeSchema = new MongooseSchema12(
6884
+ {
6885
+ description: { required: false, type: String },
6886
+ name: { required: false, type: String },
6887
+ price: { required: false, type: Number },
6888
+ productGroups: { required: false, type: [String] }
6889
+ },
6890
+ { _id: false }
6891
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6892
+ );
6893
+ var LocationsSchema = new MongooseSchema12(
6894
+ {
6895
+ dateTime: {
6896
+ endDate: { required: false, type: String },
6897
+ endTime: { required: false, type: String },
6898
+ startDate: { required: false, type: String },
6899
+ startTime: { required: false, type: String }
6900
+ },
6901
+ description: { required: false, type: String },
6902
+ location: {
6903
+ city: { required: false, type: String },
6904
+ coordinates: {
6905
+ required: false,
6906
+ type: [Number]
6907
+ // [longitude, latitude]
6908
+ },
6909
+ country: { required: false, type: String },
6910
+ fullAddress: { required: false, type: String },
6911
+ latitude: { required: false, type: Number },
6912
+ longitude: { required: false, type: Number },
6913
+ region: { required: false, type: String },
6914
+ type: { required: false, type: String }
6915
+ // Mongoose GeoJSON type
6916
+ }
6917
+ },
6918
+ { _id: false }
6919
+ // Prevents Mongoose from creating an additional _id field for subdocuments
6920
+ );
6921
+ var schema8 = new MongooseSchema12(
6922
+ {
6923
+ ...baseResourceFields,
6924
+ // Importing base resource fields from global.ts
6925
+ availability: {
6926
+ corporate: { default: false, required: false, type: Boolean },
6927
+ private: { default: false, required: false, type: Boolean },
6928
+ school: { default: false, required: false, type: Boolean }
6929
+ },
6930
+ categories: [CategorySchema],
6931
+ locations: [LocationsSchema],
6932
+ multiLocation: { required: true, type: Boolean },
6933
+ products: [MenuTypeSchema],
6934
+ vendorInfoId: {
6935
+ ref: "VendorInfo",
6936
+ required: false,
6937
+ type: import_mongoose12.default.Schema.Types.ObjectId
6938
+ },
6939
+ vendorType: {
6940
+ enum: Object.values(EnumVendorType),
6941
+ required: true,
6942
+ type: String
6943
+ }
6944
+ },
6945
+ { timestamps: true }
6946
+ );
6947
+ schema8.index({ name: 1 });
6948
+ schema8.index({ description: 1 });
6949
+ schema8.index({ region: 1 });
6950
+ schema8.index({ "categories.name": 1 });
6951
+ schema8.index({ "partners.email": 1 });
6952
+ var VendorModel = import_mongoose12.default.model("Vendor", schema8);
6953
+
6954
+ // src/mongoose/vendor/VendorInfo.ts
6955
+ var import_mongoose13 = __toESM(require("mongoose"));
6956
+ var MongooseSchema13 = import_mongoose13.default.Schema;
6957
+ var AttributesSchema = new MongooseSchema13(
6958
+ {
6959
+ details: { required: false, type: String },
6960
+ isRequired: { default: false, required: true, type: Boolean }
6961
+ },
6962
+ { _id: false }
6963
+ );
6964
+ var schema9 = new MongooseSchema13(
6965
+ {
6966
+ compliance: {
6967
+ foodBeverageLicense: { default: false, required: false, type: Boolean },
6968
+ liabilityInsurance: { default: false, required: false, type: Boolean }
6969
+ },
6970
+ documents: [ResourceImageTypeSchema],
6971
+ product: {
6972
+ foodFlavors: {
6973
+ enum: Object.values(EnumFoodFlavor),
6974
+ required: true,
6975
+ type: [String]
6976
+ },
6977
+ packaging: { required: true, type: [String] },
6978
+ priceRange: {
6979
+ max: { required: true, type: Number },
6980
+ min: { required: true, type: Number }
6981
+ },
6982
+ producedIn: { required: true, type: [String] }
6983
+ },
6984
+ requirements: {
6985
+ electricity: AttributesSchema,
6986
+ gazebo: AttributesSchema,
6987
+ table: AttributesSchema
6988
+ },
6989
+ stallInfo: {
6990
+ size: {
6991
+ depth: { required: true, type: Number },
6992
+ width: { required: true, type: Number }
6993
+ }
6994
+ },
6995
+ vendorId: {
6996
+ ref: "Vendor",
6997
+ required: true,
6998
+ type: import_mongoose13.default.Schema.Types.ObjectId
6999
+ }
7000
+ },
7001
+ { timestamps: true }
7002
+ );
7003
+ var VendorInfoModel = import_mongoose13.default.model(
7004
+ "VendorInfo",
7005
+ schema9
7006
+ );
7007
+
7008
+ // src/mongoose/event/Event.ts
7009
+ var import_mongoose14 = __toESM(require("mongoose"));
7010
+ var MongooseSchema14 = import_mongoose14.default.Schema;
7011
+ var locationsSchema = new MongooseSchema14(
7012
+ {
7013
+ city: { required: true, type: String },
7014
+ coordinates: {
7015
+ required: true,
7016
+ type: [Number]
7017
+ // [longitude, latitude]
7018
+ },
7019
+ country: { required: true, type: String },
7020
+ fullAddress: { required: true, type: String },
7021
+ latitude: { required: true, type: Number },
7022
+ longitude: { required: true, type: Number },
7023
+ region: { required: true, type: String },
7024
+ type: {
7025
+ default: "Point",
7026
+ enum: ["Point"],
7027
+ required: true,
7028
+ type: String
7029
+ }
7030
+ },
7031
+ { _id: false }
7032
+ // Prevents Mongoose from creating an additional _id field for subdocuments
7033
+ );
7034
+ var dateTimeSchema3 = new MongooseSchema14(
7035
+ {
7036
+ endDate: { required: true, type: String },
7037
+ endTime: { required: true, type: String },
7038
+ startDate: { required: true, type: String },
7039
+ startTime: { required: true, type: String }
7040
+ },
7041
+ { _id: false }
7042
+ // Prevents Mongoose from creating an additional _id field for subdocuments
7043
+ );
7044
+ var schema10 = new MongooseSchema14(
7045
+ {
7046
+ ...baseResourceFields,
7047
+ // Importing base resource fields from global.ts
7048
+ dateTime: [dateTimeSchema3],
7049
+ eventInfoId: {
7050
+ ref: "EventInfo",
7051
+ required: false,
7052
+ type: import_mongoose14.default.Schema.Types.ObjectId
7053
+ },
7054
+ eventType: {
7055
+ enum: Object.values(EnumEventType),
7056
+ required: true,
7057
+ type: String
7058
+ },
7059
+ location: {
7060
+ required: true,
7061
+ type: locationsSchema
7062
+ },
7063
+ nzbn: { required: true, type: String },
7064
+ provider: { required: false, type: String },
7065
+ rainOrShine: { required: true, type: Boolean },
7066
+ tags: { required: true, type: [String] }
7067
+ },
7068
+ { timestamps: true }
7069
+ );
7070
+ schema10.index({ name: 1 });
7071
+ schema10.index({ description: 1 });
7072
+ schema10.index({ region: 1 });
7073
+ schema10.index({ location: "2dsphere" });
7074
+ schema10.index({ tags: 1 });
7075
+ schema10.index({ "partners.email": 1 });
7076
+ var EventModel = import_mongoose14.default.model("Event", schema10);
7077
+
7078
+ // src/service/database.ts
7079
+ var import_mongoose15 = __toESM(require("mongoose"));
7080
+
7081
+ // src/service/timezonePlugin.ts
7082
+ var import_dayjs3 = __toESM(require("dayjs"));
7083
+ var import_timezone2 = __toESM(require("dayjs/plugin/timezone"));
7084
+ var import_utc2 = __toESM(require("dayjs/plugin/utc"));
7085
+ import_dayjs3.default.extend(import_utc2.default);
7086
+ import_dayjs3.default.extend(import_timezone2.default);
7087
+ function timezonePlugin(schema11) {
7088
+ if (!schema11.get("timestamps")) return;
7089
+ const transform = (_doc, ret) => {
7090
+ if (ret.createdAt)
7091
+ ret.createdAt = (0, import_dayjs3.default)(ret.createdAt).tz("Pacific/Auckland").format();
7092
+ if (ret.updatedAt)
7093
+ ret.updatedAt = (0, import_dayjs3.default)(ret.updatedAt).tz("Pacific/Auckland").format();
7094
+ return ret;
7095
+ };
7096
+ schema11.set("toJSON", { transform });
7097
+ schema11.set("toObject", { transform });
7098
+ }
7099
+
7100
+ // src/service/database.ts
7101
+ import_mongoose15.default.plugin(timezonePlugin);
7102
+ var connectToDatabase = async () => {
7103
+ try {
7104
+ const mongoUri = process.env.MONGODB_URI ? process.env.MONGODB_URI : (
7105
+ // Fallback to MongoDB Atlas connection string
7106
+ `mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_NAME}.mongodb.net/?retryWrites=true&w=majority&appName=${process.env.APP_NAME}`
7107
+ );
7108
+ await import_mongoose15.default.connect(mongoUri);
7109
+ const connectionType = process.env.MONGODB_URI ? "Local MongoDB" : "MongoDB Atlas";
7110
+ console.log(
7111
+ `${connectionType} connected from server/src/service/database.ts`
7112
+ );
7113
+ } catch (err) {
7114
+ console.error("Error connecting to MongoDB:", err);
7115
+ throw err;
7116
+ }
7117
+ };
7118
+
7119
+ // src/service/notificationService.ts
7120
+ async function publishNotificationEvents(userId, context) {
7121
+ try {
7122
+ const userNotifications = await Notification_default.find({
7123
+ userId
7124
+ }).sort({ createdAt: -1 });
7125
+ const [total, unread] = await Promise.all([
7126
+ Notification_default.countDocuments({ userId }),
7127
+ Notification_default.countDocuments({ isRead: false, userId })
7128
+ ]);
7129
+ context.pubsub.publish("GET_NOTIFICATIONS" /* GET_NOTIFICATIONS */, {
7130
+ getNotifications: userNotifications,
7131
+ getNotificationsUserId: userId
7132
+ });
7133
+ context.pubsub.publish("GET_NOTIFICATIONS_COUNT" /* GET_NOTIFICATIONS_COUNT */, {
7134
+ getNotificationsCount: { total, unread, userId }
7135
+ });
7136
+ console.log(`Published notification events for user: ${String(userId)}`);
7137
+ } catch (error) {
7138
+ console.error(
7139
+ `Failed to publish notification events for user ${String(userId)}:`,
7140
+ error
7141
+ );
7142
+ }
7143
+ }
7144
+ async function createNotifications(payload, context) {
7145
+ const { data, message, title, type, userIds } = payload;
7146
+ try {
7147
+ const notifications = userIds.map((userId) => ({
7148
+ data,
7149
+ isRead: false,
7150
+ message,
7151
+ title,
7152
+ type,
7153
+ userId
7154
+ }));
7155
+ const savedNotifications = await Notification_default.insertMany(notifications);
7156
+ console.log(
7157
+ `Created ${savedNotifications.length} notifications for ${userIds.length} users`
7158
+ );
7159
+ const uniqueUserIds = [...new Set(userIds)];
7160
+ for (const userId of uniqueUserIds) {
7161
+ await publishNotificationEvents(userId, context);
7162
+ }
7163
+ return savedNotifications;
7164
+ } catch (error) {
7165
+ console.error("Failed to create notifications:", error);
7166
+ return [];
7167
+ }
7168
+ }
7169
+
7170
+ // src/service/sendPushNotification.ts
7171
+ var import_expo_server_sdk = require("expo-server-sdk");
7172
+ var expo = new import_expo_server_sdk.Expo();
7173
+ function extractTokensFromMessage(message) {
7174
+ return Array.isArray(message.to) ? message.to : [message.to];
7175
+ }
7176
+ function createPushMessages({
7177
+ tokens,
7178
+ message,
7179
+ title,
7180
+ data
7181
+ }) {
7182
+ const messages = [];
7183
+ const invalidTokens = [];
7184
+ for (const token of tokens) {
7185
+ if (!import_expo_server_sdk.Expo.isExpoPushToken(token)) {
7186
+ invalidTokens.push(token);
7187
+ continue;
7188
+ }
7189
+ messages.push({
7190
+ body: message,
7191
+ data: { ...data },
7192
+ sound: "default",
7193
+ title,
7194
+ to: token
7195
+ });
7196
+ }
7197
+ return { invalidTokens, messages };
7198
+ }
7199
+ function processChunkResults(tickets, chunk) {
7200
+ let successCount = 0;
7201
+ const failedTokens = [];
7202
+ for (const [ticketIndex, ticket] of tickets.entries()) {
7203
+ if (ticket.status === "error") {
7204
+ const message = chunk[ticketIndex];
7205
+ if (message) {
7206
+ const tokens = extractTokensFromMessage(message);
7207
+ if (ticket.details?.error === "DeviceNotRegistered") {
7208
+ failedTokens.push(...tokens);
7209
+ }
7210
+ console.log("Push notification error", {
7211
+ error: ticket.details?.error,
7212
+ tokens
7213
+ });
7214
+ }
7215
+ } else {
7216
+ successCount++;
7217
+ }
7218
+ }
7219
+ return { failedTokens, successCount };
7220
+ }
7221
+ async function sendChunk(chunk, chunkIndex) {
7222
+ try {
7223
+ const tickets = await expo.sendPushNotificationsAsync(chunk);
7224
+ const { successCount, failedTokens } = processChunkResults(tickets, chunk);
7225
+ console.log(
7226
+ `Chunk ${chunkIndex + 1}: Sent ${successCount}/${chunk.length} notifications successfully`
7227
+ );
7228
+ return { failedTokens, successCount };
7229
+ } catch (error) {
7230
+ console.log("Error sending Expo push notification chunk", {
7231
+ chunkIndex,
7232
+ chunkSize: chunk.length,
7233
+ error: error instanceof Error ? error.message : String(error)
7234
+ });
7235
+ return { failedTokens: [], successCount: 0 };
7236
+ }
7237
+ }
7238
+ async function sendPushNotification({
7239
+ data,
7240
+ message,
7241
+ title,
7242
+ userIds
7243
+ }) {
7244
+ const pushTokens = await PushToken_default.find({ userId: { $in: userIds } });
7245
+ const expoTokens = pushTokens.map((token) => token.token);
7246
+ const { messages, invalidTokens } = createPushMessages({
7247
+ data,
7248
+ message,
7249
+ title,
7250
+ tokens: expoTokens
7251
+ });
7252
+ if (invalidTokens.length > 0) {
7253
+ console.log(`Found ${invalidTokens.length} invalid push tokens`);
7254
+ }
7255
+ if (messages.length === 0) {
7256
+ console.log("No valid messages to send after filtering tokens");
7257
+ return;
7258
+ }
7259
+ const chunks = expo.chunkPushNotifications(messages);
7260
+ let totalSuccessCount = 0;
7261
+ const allFailedTokens = [];
7262
+ for (const [chunkIndex, chunk] of chunks.entries()) {
7263
+ const { successCount, failedTokens } = await sendChunk(
7264
+ chunk,
7265
+ chunkIndex + 1
7266
+ );
7267
+ totalSuccessCount += successCount;
7268
+ allFailedTokens.push(...failedTokens);
7269
+ }
7270
+ console.log(
7271
+ `Sent push notification to ${totalSuccessCount}/${messages.length} tokens across ${chunks.length} chunks`
7272
+ );
7273
+ if (allFailedTokens.length > 0) {
7274
+ console.log(`Found ${allFailedTokens.length} failed push tokens`);
7275
+ }
7276
+ }
7277
+
6168
7278
  // src/storage/index.ts
6169
7279
  var SAVED_PASSWORD_KEY = "savedPassword";
6170
7280
  var SAVED_EMAIL_KEY = "savedEmail";
@@ -6209,18 +7319,9 @@ var fonts = {
6209
7319
  fontWeight: "400"
6210
7320
  }
6211
7321
  };
6212
-
6213
- // src/types/resourceActivities.ts
6214
- var EnumActivity = /* @__PURE__ */ ((EnumActivity2) => {
6215
- EnumActivity2["FAVORITE"] = "FAVORITE";
6216
- EnumActivity2["GOING"] = "GOING";
6217
- EnumActivity2["INTERESTED"] = "INTERESTED";
6218
- EnumActivity2["PRESENT"] = "PRESENT";
6219
- EnumActivity2["VIEW"] = "VIEW";
6220
- return EnumActivity2;
6221
- })(EnumActivity || {});
6222
7322
  // Annotate the CommonJS export names for ESM import in node:
6223
7323
  0 && (module.exports = {
7324
+ CategorySchema,
6224
7325
  EnumActivity,
6225
7326
  EnumAdShowOn,
6226
7327
  EnumAdStatus,
@@ -6234,6 +7335,7 @@ var EnumActivity = /* @__PURE__ */ ((EnumActivity2) => {
6234
7335
  EnumNotificationType,
6235
7336
  EnumOSPlatform,
6236
7337
  EnumPaymentMethod,
7338
+ EnumPubSubEvents,
6237
7339
  EnumRegions,
6238
7340
  EnumRelationResource,
6239
7341
  EnumResourceType,
@@ -6242,20 +7344,28 @@ var EnumActivity = /* @__PURE__ */ ((EnumActivity2) => {
6242
7344
  EnumUserRole,
6243
7345
  EnumVendorType,
6244
7346
  ImageTypeEnum,
7347
+ ParticipantSchema,
7348
+ RelationTypeSchema,
7349
+ ResourceImageTypeSchema,
6245
7350
  SAVED_EMAIL_KEY,
6246
7351
  SAVED_PASSWORD_KEY,
6247
7352
  SAVED_REFRESH_TOKEN_KEY,
6248
7353
  SAVED_TOKEN_KEY,
7354
+ SocialMediaTypeSchema,
7355
+ StallTypeSchema,
6249
7356
  USER_STORAGE_KEY,
6250
7357
  availableCategories,
6251
7358
  availableCityOptions,
6252
7359
  availableRegionOptions,
6253
7360
  availableRegionTypes,
6254
7361
  availableTagTypes,
7362
+ baseResourceFields,
6255
7363
  capitalizeFirstLetter,
6256
7364
  categoryColors,
6257
7365
  companyContactFields,
7366
+ connectToDatabase,
6258
7367
  contactUsFields,
7368
+ createNotifications,
6259
7369
  darkColors,
6260
7370
  dateFormat,
6261
7371
  defaultEventFormValues,
@@ -6282,20 +7392,25 @@ var EnumActivity = /* @__PURE__ */ ((EnumActivity2) => {
6282
7392
  mapBaseResourceTypeToFormData,
6283
7393
  normalizeUrl,
6284
7394
  packagingOptions,
7395
+ partnersSchema,
6285
7396
  paymentMethodOptions,
6286
7397
  producedIngOptions,
6287
7398
  productLabelGroups,
6288
7399
  profileFields,
7400
+ publishNotificationEvents,
6289
7401
  registerFields,
7402
+ relationDatesSchema,
6290
7403
  removeTypename,
6291
7404
  requestPasswordResetFields,
6292
7405
  requirementsOptions,
6293
7406
  resetPasswordFields,
7407
+ sendPushNotification,
6294
7408
  socialMediaFields,
6295
7409
  sortDatesChronologically,
6296
7410
  stallTypeOptions,
6297
7411
  statusOptions,
6298
7412
  tagOptions,
7413
+ termsAgreementSchema,
6299
7414
  testersFields,
6300
7415
  timeFormat,
6301
7416
  truncateText,