@timardex/cluemart-shared 1.2.28 → 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 (46) 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-Ddkaba1k.d.mts → auth-Ci6Uskch.d.mts} +1 -1
  4. package/dist/{auth-BRY-YJss.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 +1 -1
  10. package/dist/formFields/index.d.ts +1 -1
  11. package/dist/{global-IDogsFQv.d.ts → global-2Jk7sRkL.d.ts} +18 -4
  12. package/dist/{global-DlaX2SCk.d.mts → global-DWuTxnJ8.d.mts} +18 -4
  13. package/dist/graphql/index.d.mts +3 -2
  14. package/dist/graphql/index.d.ts +3 -2
  15. package/dist/hooks/index.d.mts +4 -3
  16. package/dist/hooks/index.d.ts +4 -3
  17. package/dist/hooks/index.mjs +5 -5
  18. package/dist/index.cjs +1130 -26
  19. package/dist/index.cjs.map +1 -1
  20. package/dist/index.d.mts +347 -2
  21. package/dist/index.d.ts +347 -2
  22. package/dist/index.mjs +1116 -26
  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/service/index.cjs +336 -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 +4 -3
  37. package/dist/types/index.d.ts +4 -3
  38. package/dist/types/index.mjs +4 -19
  39. package/dist/types/index.mjs.map +1 -1
  40. package/dist/user-DbEEY7fv.d.ts +64 -0
  41. package/dist/user-OPY5EOqR.d.mts +64 -0
  42. package/dist/utils/index.d.mts +1 -1
  43. package/dist/utils/index.d.ts +1 -1
  44. package/package.json +1 -1
  45. package/dist/ad-C-0i99zR.d.mts +0 -129
  46. package/dist/ad-ZnPU3uan.d.ts +0 -129
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,
@@ -52,20 +53,28 @@ __export(index_exports, {
52
53
  EnumUserRole: () => EnumUserRole,
53
54
  EnumVendorType: () => EnumVendorType,
54
55
  ImageTypeEnum: () => ImageTypeEnum,
56
+ ParticipantSchema: () => ParticipantSchema,
57
+ RelationTypeSchema: () => RelationTypeSchema,
58
+ ResourceImageTypeSchema: () => ResourceImageTypeSchema,
55
59
  SAVED_EMAIL_KEY: () => SAVED_EMAIL_KEY,
56
60
  SAVED_PASSWORD_KEY: () => SAVED_PASSWORD_KEY,
57
61
  SAVED_REFRESH_TOKEN_KEY: () => SAVED_REFRESH_TOKEN_KEY,
58
62
  SAVED_TOKEN_KEY: () => SAVED_TOKEN_KEY,
63
+ SocialMediaTypeSchema: () => SocialMediaTypeSchema,
64
+ StallTypeSchema: () => StallTypeSchema,
59
65
  USER_STORAGE_KEY: () => USER_STORAGE_KEY,
60
66
  availableCategories: () => availableCategories,
61
67
  availableCityOptions: () => availableCityOptions,
62
68
  availableRegionOptions: () => availableRegionOptions,
63
69
  availableRegionTypes: () => availableRegionTypes,
64
70
  availableTagTypes: () => availableTagTypes,
71
+ baseResourceFields: () => baseResourceFields,
65
72
  capitalizeFirstLetter: () => capitalizeFirstLetter,
66
73
  categoryColors: () => categoryColors,
67
74
  companyContactFields: () => companyContactFields,
75
+ connectToDatabase: () => connectToDatabase,
68
76
  contactUsFields: () => contactUsFields,
77
+ createNotifications: () => createNotifications,
69
78
  darkColors: () => darkColors,
70
79
  dateFormat: () => dateFormat,
71
80
  defaultEventFormValues: () => defaultEventFormValues,
@@ -92,20 +101,25 @@ __export(index_exports, {
92
101
  mapBaseResourceTypeToFormData: () => mapBaseResourceTypeToFormData,
93
102
  normalizeUrl: () => normalizeUrl,
94
103
  packagingOptions: () => packagingOptions,
104
+ partnersSchema: () => partnersSchema,
95
105
  paymentMethodOptions: () => paymentMethodOptions,
96
106
  producedIngOptions: () => producedIngOptions,
97
107
  productLabelGroups: () => productLabelGroups,
98
108
  profileFields: () => profileFields,
109
+ publishNotificationEvents: () => publishNotificationEvents,
99
110
  registerFields: () => registerFields,
111
+ relationDatesSchema: () => relationDatesSchema,
100
112
  removeTypename: () => removeTypename,
101
113
  requestPasswordResetFields: () => requestPasswordResetFields,
102
114
  requirementsOptions: () => requirementsOptions,
103
115
  resetPasswordFields: () => resetPasswordFields,
116
+ sendPushNotification: () => sendPushNotification,
104
117
  socialMediaFields: () => socialMediaFields,
105
118
  sortDatesChronologically: () => sortDatesChronologically,
106
119
  stallTypeOptions: () => stallTypeOptions,
107
120
  statusOptions: () => statusOptions,
108
121
  tagOptions: () => tagOptions,
122
+ termsAgreementSchema: () => termsAgreementSchema,
109
123
  testersFields: () => testersFields,
110
124
  timeFormat: () => timeFormat,
111
125
  truncateText: () => truncateText,
@@ -4930,7 +4944,7 @@ var socialMediaSchema = yup.object({
4930
4944
  is: (name) => !!name,
4931
4945
  // If name has a value
4932
4946
  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()
4947
+ otherwise: (schema11) => schema11.notRequired()
4934
4948
  })
4935
4949
  });
4936
4950
  var globalResourceSchema = yup.object().shape({
@@ -5003,21 +5017,21 @@ var paymentInfoSchema = yup2.object({
5003
5017
  paymentMethod: yup2.mixed().oneOf(Object.values(EnumPaymentMethod)).required("Please select a Payment method"),
5004
5018
  accountHolderName: yup2.string().when("paymentMethod", {
5005
5019
  is: "bank_transfer" /* BANK_TRANSFER */,
5006
- then: (schema) => schema.required("Account holder name is required for bank transfer").trim(),
5007
- otherwise: (schema) => schema.notRequired()
5020
+ then: (schema11) => schema11.required("Account holder name is required for bank transfer").trim(),
5021
+ otherwise: (schema11) => schema11.notRequired()
5008
5022
  }),
5009
5023
  accountNumber: yup2.string().when("paymentMethod", {
5010
5024
  is: "bank_transfer" /* BANK_TRANSFER */,
5011
- 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(
5012
5026
  nzBankAccountRegex,
5013
5027
  "Account number must be in format: XX-XXXX-XXXXXXX-XX"
5014
5028
  ).trim(),
5015
- otherwise: (schema) => schema.notRequired()
5029
+ otherwise: (schema11) => schema11.notRequired()
5016
5030
  }),
5017
5031
  link: yup2.string().when("paymentMethod", {
5018
5032
  is: (val) => val !== "bank_transfer" /* BANK_TRANSFER */,
5019
5033
  then: () => normalizedUrlTransform().url("Link must be a valid URL").required("Link is required for PayPal/Stripe"),
5020
- otherwise: (schema) => schema.notRequired()
5034
+ otherwise: (schema11) => schema11.notRequired()
5021
5035
  })
5022
5036
  });
5023
5037
  var eventInfoSchema = yup2.object().shape({
@@ -5196,7 +5210,7 @@ var adSchema = yup7.object().shape({
5196
5210
  return endDate > now;
5197
5211
  }).when("start", {
5198
5212
  is: (val) => val && val.length > 0,
5199
- then: (schema) => schema.test(
5213
+ then: (schema11) => schema11.test(
5200
5214
  "is-after-start",
5201
5215
  "End date must be after start date",
5202
5216
  function(value) {
@@ -6166,6 +6180,1101 @@ function useAdForm(data) {
6166
6180
  };
6167
6181
  }
6168
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
+
6169
7278
  // src/storage/index.ts
6170
7279
  var SAVED_PASSWORD_KEY = "savedPassword";
6171
7280
  var SAVED_EMAIL_KEY = "savedEmail";
@@ -6210,27 +7319,9 @@ var fonts = {
6210
7319
  fontWeight: "400"
6211
7320
  }
6212
7321
  };
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
7322
  // Annotate the CommonJS export names for ESM import in node:
6233
7323
  0 && (module.exports = {
7324
+ CategorySchema,
6234
7325
  EnumActivity,
6235
7326
  EnumAdShowOn,
6236
7327
  EnumAdStatus,
@@ -6253,20 +7344,28 @@ var EnumActivity = /* @__PURE__ */ ((EnumActivity2) => {
6253
7344
  EnumUserRole,
6254
7345
  EnumVendorType,
6255
7346
  ImageTypeEnum,
7347
+ ParticipantSchema,
7348
+ RelationTypeSchema,
7349
+ ResourceImageTypeSchema,
6256
7350
  SAVED_EMAIL_KEY,
6257
7351
  SAVED_PASSWORD_KEY,
6258
7352
  SAVED_REFRESH_TOKEN_KEY,
6259
7353
  SAVED_TOKEN_KEY,
7354
+ SocialMediaTypeSchema,
7355
+ StallTypeSchema,
6260
7356
  USER_STORAGE_KEY,
6261
7357
  availableCategories,
6262
7358
  availableCityOptions,
6263
7359
  availableRegionOptions,
6264
7360
  availableRegionTypes,
6265
7361
  availableTagTypes,
7362
+ baseResourceFields,
6266
7363
  capitalizeFirstLetter,
6267
7364
  categoryColors,
6268
7365
  companyContactFields,
7366
+ connectToDatabase,
6269
7367
  contactUsFields,
7368
+ createNotifications,
6270
7369
  darkColors,
6271
7370
  dateFormat,
6272
7371
  defaultEventFormValues,
@@ -6293,20 +7392,25 @@ var EnumActivity = /* @__PURE__ */ ((EnumActivity2) => {
6293
7392
  mapBaseResourceTypeToFormData,
6294
7393
  normalizeUrl,
6295
7394
  packagingOptions,
7395
+ partnersSchema,
6296
7396
  paymentMethodOptions,
6297
7397
  producedIngOptions,
6298
7398
  productLabelGroups,
6299
7399
  profileFields,
7400
+ publishNotificationEvents,
6300
7401
  registerFields,
7402
+ relationDatesSchema,
6301
7403
  removeTypename,
6302
7404
  requestPasswordResetFields,
6303
7405
  requirementsOptions,
6304
7406
  resetPasswordFields,
7407
+ sendPushNotification,
6305
7408
  socialMediaFields,
6306
7409
  sortDatesChronologically,
6307
7410
  stallTypeOptions,
6308
7411
  statusOptions,
6309
7412
  tagOptions,
7413
+ termsAgreementSchema,
6310
7414
  testersFields,
6311
7415
  timeFormat,
6312
7416
  truncateText,