@timardex/cluemart-shared 1.2.28 → 1.2.30

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