@timardex/cluemart-shared 1.2.35 → 1.2.37
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.
- package/dist/{ad-CWAaH5Ql.d.mts → ad-Bv5fLkN0.d.mts} +1 -1
- package/dist/{ad-D60cy5L4.d.ts → ad-DDPNpx02.d.ts} +1 -1
- package/dist/{auth-BslKse3L.d.mts → auth-BVGs-5Vm.d.mts} +1 -1
- package/dist/{auth-Ch9Nt77g.d.ts → auth-BhUIvvZ2.d.ts} +1 -1
- package/dist/formFields/index.d.mts +1 -3
- package/dist/formFields/index.d.ts +1 -3
- package/dist/{global-DvxKMAQD.d.ts → global-BA84KF8J.d.ts} +2 -148
- package/dist/{global-j9FEfVZs.d.mts → global-BEqzo5Z2.d.mts} +2 -148
- package/dist/graphql/index.d.mts +3 -5
- package/dist/graphql/index.d.ts +3 -5
- package/dist/hooks/index.d.mts +3 -5
- package/dist/hooks/index.d.ts +3 -5
- package/dist/hooks/index.mjs +5 -5
- package/dist/index.cjs +17 -1013
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +311 -819
- package/dist/index.d.ts +311 -819
- package/dist/index.mjs +17 -986
- package/dist/index.mjs.map +1 -1
- package/dist/resourceActivities-0CdofGJp.d.mts +96 -0
- package/dist/resourceActivities-BjgH9TFc.d.ts +96 -0
- package/dist/types/index.cjs +2 -26
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.mts +4 -6
- package/dist/types/index.d.ts +4 -6
- package/dist/types/index.mjs +11 -8
- package/dist/types/index.mjs.map +1 -1
- package/dist/utils/index.d.mts +1 -3
- package/dist/utils/index.d.ts +1 -3
- package/package.json +1 -4
- package/dist/chunk-4OLDTZXH.mjs +0 -26
- package/dist/chunk-4OLDTZXH.mjs.map +0 -1
- package/dist/chunk-WWL2Q5DN.mjs +0 -44
- package/dist/chunk-WWL2Q5DN.mjs.map +0 -1
- package/dist/mongoose/index.cjs +0 -1085
- package/dist/mongoose/index.cjs.map +0 -1
- package/dist/mongoose/index.d.mts +0 -415
- package/dist/mongoose/index.d.ts +0 -415
- package/dist/mongoose/index.mjs +0 -878
- package/dist/mongoose/index.mjs.map +0 -1
- package/dist/resourceActivities-B4roVKtQ.d.ts +0 -34
- package/dist/resourceActivities-BIjtlOGp.d.mts +0 -34
- package/dist/service/index.cjs +0 -172
- package/dist/service/index.cjs.map +0 -1
- package/dist/service/index.d.mts +0 -25
- package/dist/service/index.d.ts +0 -25
- package/dist/service/index.mjs +0 -79
- package/dist/service/index.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mongoose/Ad.ts","../../src/mongoose/global.ts","../../src/mongoose/Relation.ts","../../src/mongoose/event/EventInfo.ts","../../src/mongoose/Chat.ts","../../src/mongoose/PushToken.ts","../../src/mongoose/ResourceActivity.ts","../../src/mongoose/Testers.ts","../../src/mongoose/User.ts","../../src/mongoose/VerificationToken.ts","../../src/mongoose/vendor/Vendor.ts","../../src/mongoose/vendor/VendorInfo.ts","../../src/mongoose/event/Event.ts"],"sourcesContent":["import mongoose from \"mongoose\";\n\nimport { EnumResourceType } from \"src/enums\";\nimport {\n AdType,\n EnumAdShowOn,\n EnumAdStatus,\n EnumAdStyle,\n EnumAdType,\n} from \"src/types\";\n\nimport { SocialMediaTypeSchema } from \"./global\";\n\nconst MongooseSchema = mongoose.Schema;\n\nconst schema = new MongooseSchema<AdType>(\n {\n active: { default: true, type: Boolean },\n adStyle: {\n default: EnumAdStyle.BLOOM,\n enum: Object.values(EnumAdStyle),\n required: true,\n type: String,\n },\n adType: {\n default: EnumAdType.SPONSORED,\n enum: Object.values(EnumAdType),\n required: true,\n type: String,\n },\n // TODO: similar to ViewSchema\n clicks: { default: 0, required: true, type: Number },\n clui: { required: false, type: String },\n end: { required: true, type: Date },\n // TODO: similar to ViewSchema\n impressions: { default: 0, required: true, type: Number },\n resourceCover: { required: true, type: String },\n resourceDescription: { required: true, type: String },\n resourceId: { required: true, type: String },\n resourceLogo: { required: false, type: String },\n resourceName: { required: true, type: String },\n resourceRegion: { required: true, type: String },\n resourceType: {\n enum: Object.values(EnumResourceType),\n required: true,\n type: String,\n },\n showOn: {\n default: EnumAdShowOn.FRONT_PAGE,\n enum: Object.values(EnumAdShowOn),\n required: true,\n type: String,\n },\n socialMedia: [SocialMediaTypeSchema],\n start: { required: true, type: Date },\n status: {\n default: EnumAdStatus.ACTIVE,\n enum: Object.values(EnumAdStatus),\n required: true,\n type: String,\n },\n targetRegion: { required: false, type: String },\n },\n {\n timestamps: true,\n },\n);\n\n// Compound index for background job queries\nschema.index({\n end: 1,\n start: 1,\n status: 1,\n});\n\nexport const AdModel =\n (mongoose.models.Ad as mongoose.Model<AdType>) ||\n mongoose.model<AdType>(\"Ad\", schema);\n","import mongoose from \"mongoose\";\n\nimport { EnumResourceType, EnumUserLicence } from \"src/enums\";\nimport {\n Category,\n ObjectId,\n OwnerType,\n PartnerType,\n PosterUsageType,\n RelationDate,\n ResourceContactDetailsType,\n ResourceImageType,\n SocialMediaType,\n Subcategory,\n TermsAgreement,\n} from \"src/types\";\n\nimport { relationDatesSchema } from \"./Relation\";\n\nconst MongooseSchema = mongoose.Schema;\n\nexport type SchemaOwnerType = Omit<OwnerType, \"userId\"> & {\n userId: ObjectId;\n};\n\nconst OwnerTypeSchema = new MongooseSchema<SchemaOwnerType>(\n {\n email: { required: true, type: String },\n userId: {\n ref: \"User\",\n required: true,\n type: mongoose.Schema.Types.ObjectId,\n },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nexport const SocialMediaTypeSchema = new MongooseSchema<SocialMediaType>(\n {\n link: { required: true, type: String },\n name: { required: true, type: String },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field\n);\n\nexport const ResourceImageTypeSchema = new MongooseSchema<ResourceImageType>(\n {\n source: { required: false, type: String },\n title: { required: false, type: String },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nconst SubCategorySchema = new MongooseSchema<Subcategory>(\n {\n id: { required: false, type: String },\n items: [\n {\n id: { required: false, type: String },\n name: { required: false, type: String },\n },\n ],\n name: { required: false, type: String },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nexport const CategorySchema = new MongooseSchema<Category>(\n {\n id: { required: true, type: String },\n name: { required: true, type: String },\n subcategories: [SubCategorySchema],\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nconst PosterUsageTypeSchema = new MongooseSchema<PosterUsageType>(\n {\n count: { default: 0, required: false, type: Number },\n month: { required: false, type: String },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nexport const partnersSchema = new MongooseSchema<PartnerType>(\n {\n email: { required: false, type: String },\n licence: {\n enum: Object.values(EnumUserLicence),\n required: false,\n type: String,\n },\n resourceId: {\n required: false,\n type: String,\n },\n resourceType: {\n enum: Object.values(EnumResourceType),\n required: false,\n type: String,\n },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nconst ContactDetailsSchema = new MongooseSchema<ResourceContactDetailsType>(\n {\n email: { required: false, type: String },\n landlinePhone: { required: false, type: String },\n mobilePhone: { required: false, type: String },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nexport const termsAgreementSchema = new MongooseSchema<TermsAgreement>(\n {\n appBuildNumber: { required: true, type: String },\n appId: { required: true, type: String },\n appVersion: { required: true, type: String },\n brand: { required: true, type: String },\n deviceName: { required: true, type: String },\n installationId: { required: true, type: String },\n manufacturer: { required: true, type: String },\n modelName: { required: true, type: String },\n osName: { required: true, type: String },\n osVersion: { required: true, type: String },\n termVersion: { required: true, type: String },\n timestamp: { required: true, type: String },\n },\n { _id: false },\n);\n\nconst resourceRelationsSchema = new MongooseSchema<{\n relationId: ObjectId;\n relationDates: RelationDate[];\n}>(\n {\n relationDates: {\n default: [],\n required: false,\n type: [relationDatesSchema],\n },\n relationId: {\n ref: \"Relation\",\n required: false,\n type: mongoose.Schema.Types.ObjectId,\n },\n },\n { _id: false },\n);\n\nexport const baseResourceFields = {\n active: { default: false, required: true, type: Boolean },\n adIds: {\n ref: \"Ad\",\n required: false,\n type: [mongoose.Schema.Types.ObjectId],\n },\n contactDetails: ContactDetailsSchema,\n cover: ResourceImageTypeSchema,\n deletedAt: { default: null, required: false, type: Date },\n description: { required: true, type: String },\n images: [ResourceImageTypeSchema],\n logo: ResourceImageTypeSchema,\n name: { required: true, type: String },\n owner: OwnerTypeSchema,\n partners: {\n required: false,\n type: [partnersSchema],\n },\n posterUsage: PosterUsageTypeSchema,\n promoCodes: { required: false, type: [String] },\n region: { required: true, type: String },\n relations: {\n default: [],\n required: false,\n type: [resourceRelationsSchema],\n },\n socialMedia: [SocialMediaTypeSchema],\n termsAgreement: termsAgreementSchema,\n};\n","import mongoose from \"mongoose\";\n\nimport {\n EnumInviteStatus,\n EnumRelationResource,\n EnumResourceType,\n} from \"src/enums\";\nimport { ObjectId, RelationDate, RelationType } from \"src/types\";\n\nimport { StallTypeSchema } from \"./event/EventInfo\";\n\nconst MongooseSchema = mongoose.Schema;\n\nexport const relationDatesSchema = new MongooseSchema<RelationDate>(\n {\n lastUpdateBy: {\n resourceId: { required: false, type: String },\n userEmail: { required: false, type: String },\n },\n paymentReference: { required: false, type: String },\n stallType: StallTypeSchema,\n startDate: { required: false, type: String },\n startTime: { required: false, type: String },\n status: {\n enum: Object.values(EnumInviteStatus),\n required: false,\n type: String,\n },\n },\n { _id: false },\n);\n\nexport type SchemaRelationType = Omit<\n RelationType,\n \"chatId\" | \"eventId\" | \"vendorId\"\n> & {\n chatId: ObjectId;\n eventId: ObjectId;\n vendorId: ObjectId;\n};\n/**\n * This is the schema for the relation type.\n * It is used to define the structure of the relation type in the database.\n * The schema is used by Mongoose to create a model for the relation type.\n */\nexport const RelationTypeSchema = new MongooseSchema<SchemaRelationType>(\n {\n active: { default: true, required: true, type: Boolean },\n chatId: {\n ref: \"Chat\",\n required: true,\n type: mongoose.Schema.Types.ObjectId,\n },\n deletedAt: { default: null, required: false, type: Date },\n eventId: {\n ref: \"Event\",\n required: true,\n type: mongoose.Schema.Types.ObjectId,\n },\n lastUpdateBy: {\n enum: Object.values(EnumResourceType),\n required: true,\n type: String,\n },\n relationDates: [relationDatesSchema],\n relationType: {\n enum: Object.values(EnumRelationResource),\n required: true,\n type: String,\n },\n vendorId: {\n ref: \"Vendor\",\n required: true,\n type: mongoose.Schema.Types.ObjectId,\n },\n },\n { timestamps: true },\n);\n\nRelationTypeSchema.index({\n \"relationDates.startDate\": 1,\n \"relationDates.startTime\": 1,\n \"relationDates.status\": 1,\n});\n\n// --- IMPORTANT: bind custom model type ---\nexport const RelationModel =\n (mongoose.models.Relation as mongoose.Model<SchemaRelationType>) ||\n mongoose.model<SchemaRelationType>(\"Relation\", RelationTypeSchema);\n","import mongoose from \"mongoose\";\n\nimport { EnumPaymentMethod } from \"src/enums\";\nimport {\n DateTimeWithPriceType,\n EventInfoType,\n ObjectId,\n PaymentInfoType,\n Requirement,\n StallType,\n} from \"src/types\";\n\nconst MongooseSchema = mongoose.Schema;\n\nexport const StallTypeSchema = new MongooseSchema<StallType>(\n {\n electricity: {\n price: { required: false, type: Number },\n selected: { required: false, type: Boolean },\n },\n label: { required: false, type: String },\n price: { required: false, type: Number },\n stallCapacity: { required: false, type: Number },\n },\n {\n _id: false, // Prevents Mongoose from creating an additional _id field for subdocuments\n },\n);\n\nconst dateTimeSchema = new MongooseSchema<DateTimeWithPriceType>(\n {\n endDate: { required: true, type: String },\n endTime: { required: true, type: String },\n stallTypes: [StallTypeSchema],\n startDate: { required: true, type: String },\n startTime: { required: true, type: String },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nconst paymentInfoSchema = new MongooseSchema<PaymentInfoType>(\n {\n accountHolderName: { required: false, type: String },\n accountNumber: { required: false, type: String },\n link: { required: false, type: String },\n paymentMethod: {\n enum: Object.values(EnumPaymentMethod),\n required: true,\n type: String,\n },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field\n);\n\nconst requirementsSchema = new MongooseSchema<Requirement>(\n {\n category: { required: true, type: String },\n label: { required: true, type: String },\n value: { required: true, type: Boolean },\n },\n {\n _id: false, // Prevents Mongoose from creating an additional _id field for\n },\n);\n\nexport type SchemaEventInfoType = Omit<EventInfoType, \"eventId\"> & {\n eventId: ObjectId;\n};\n\n/**\n * This is the schema for the event info type.\n * It is used to define the structure of the event info type in the database.\n * The schema is used by Mongoose to create a model for the event info type.\n */\nconst schema = new MongooseSchema<SchemaEventInfoType>(\n {\n applicationDeadlineHours: { required: true, type: Number },\n dateTime: [dateTimeSchema],\n eventId: {\n ref: \"Event\",\n required: false,\n type: mongoose.Schema.Types.ObjectId,\n },\n packInTime: { required: true, type: Number },\n paymentDueHours: { required: true, type: Number },\n paymentInfo: [paymentInfoSchema],\n requirements: [requirementsSchema],\n },\n { timestamps: true },\n);\n\nexport const EventInfoModel =\n (mongoose.models.EventInfo as mongoose.Model<SchemaEventInfoType>) ||\n mongoose.model<SchemaEventInfoType>(\"EventInfo\", schema);\n","import mongoose from \"mongoose\";\n\nimport { EnumChatType } from \"src/enums\";\nimport {\n ChatMessageType,\n ChatType,\n ObjectId,\n ParticipantType,\n} from \"src/types\";\n\nconst MongooseSchema = mongoose.Schema;\n\nexport type SchemaChatMessageType = Omit<ChatMessageType, \"senderId\"> & {\n senderId: ObjectId;\n};\n\nexport type SchemaParticipantType = Omit<ParticipantType, \"userId\"> & {\n userId: ObjectId;\n};\n\nconst MessageSchema = new MongooseSchema<SchemaChatMessageType>(\n {\n content: { required: true, type: String },\n senderAvatar: { required: false, type: String },\n senderId: {\n ref: \"User\",\n required: true,\n type: mongoose.Schema.Types.ObjectId,\n },\n senderName: { required: true, type: String },\n },\n { timestamps: true },\n);\n\nexport type SchemaChatType = Omit<\n ChatType,\n \"participants\" | \"messages\" | \"resourceInfo\"\n> & {\n participants: SchemaParticipantType[];\n messages: SchemaChatMessageType[];\n resourceInfo: { eventId: ObjectId; vendorId: ObjectId } | null;\n};\n\nexport const ParticipantSchema = new MongooseSchema<SchemaParticipantType>(\n {\n active: { default: true, required: true, type: Boolean },\n email: { required: true, type: String },\n userId: {\n ref: \"User\",\n required: true,\n type: mongoose.Schema.Types.ObjectId,\n },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nconst ChatSchema = new MongooseSchema<SchemaChatType>(\n {\n active: { default: true, required: true, type: Boolean },\n chatName: { required: true, type: String },\n chatType: {\n enum: Object.values(EnumChatType),\n required: true,\n type: String,\n },\n deletedAt: { default: null, required: false, type: Date },\n messages: [MessageSchema],\n participants: [ParticipantSchema],\n resourceInfo: {\n eventId: {\n ref: \"Event\",\n required: false,\n type: mongoose.Schema.Types.ObjectId,\n },\n vendorId: {\n ref: \"Vendor\",\n required: false,\n type: mongoose.Schema.Types.ObjectId,\n },\n },\n },\n {\n timestamps: true,\n },\n);\n\nexport const ChatModel =\n (mongoose.models.Chat as mongoose.Model<SchemaChatType>) ||\n mongoose.model<SchemaChatType>(\"Chat\", ChatSchema);\n","import mongoose from \"mongoose\";\n\nimport { EnumOSPlatform } from \"src/enums\";\nimport { ObjectId } from \"src/types\";\n\nconst MongooseSchema = mongoose.Schema;\n\ntype PushTokenType = {\n _id: string;\n createdAt: Date;\n platform: EnumOSPlatform;\n token: string;\n updatedAt: Date;\n userId: string;\n};\n\nexport type SchemaPushTokenType = Omit<PushTokenType, \"userId\"> & {\n userId: ObjectId;\n};\n\n/**\n * This is the schema for the push token type.\n * It is used to define the structure of the push token type in the database.\n * The schema is used by Mongoose to create a model for the push token type.\n */\nconst schema = new MongooseSchema<SchemaPushTokenType>(\n {\n platform: {\n enum: Object.values(EnumOSPlatform),\n required: true,\n type: String,\n },\n token: { required: true, type: String },\n userId: { required: true, type: mongoose.Schema.Types.ObjectId },\n },\n { timestamps: true },\n);\n\nexport const PushTokenModel =\n (mongoose.models.PushToken as mongoose.Model<SchemaPushTokenType>) ||\n mongoose.model<SchemaPushTokenType>(\"PushToken\", schema);\n","import mongoose from \"mongoose\";\n\nimport { EnumOSPlatform, EnumResourceType } from \"src/enums\";\nimport {\n EnumActivity,\n ResourceActivityEntry,\n ResourceActivityType,\n} from \"src/types\";\n\nconst MongooseSchema = mongoose.Schema;\n\nconst ActivitySchema = new MongooseSchema<ResourceActivityEntry>(\n {\n activityType: {\n enum: Object.values(EnumActivity),\n required: true,\n type: String,\n },\n location: {\n coordinates: {\n required: false,\n type: [Number],\n },\n type: {\n default: \"Point\",\n enum: [\"Point\"],\n required: false,\n type: String,\n },\n },\n startDate: { required: false, type: String },\n startTime: { required: false, type: String },\n timestamp: { default: Date.now, type: Date },\n userAgent: {\n enum: Object.values(EnumOSPlatform),\n required: true,\n type: String,\n },\n userId: { required: false, type: String },\n },\n { _id: false },\n);\n\nconst schema = new MongooseSchema<ResourceActivityType>(\n {\n activity: { default: [], type: [ActivitySchema] },\n resourceId: { required: true, type: String },\n resourceType: {\n enum: Object.values(EnumResourceType),\n required: true,\n type: String,\n },\n },\n { timestamps: true },\n);\n\nschema.index({ resourceId: 1, resourceType: 1 }, { unique: true }); // one per entity\nschema.index({ \"views.location\": \"2dsphere\" });\n\nexport const ResourceActivityModel =\n (mongoose.models.ResourceActivity as mongoose.Model<ResourceActivityType>) ||\n mongoose.model<ResourceActivityType>(\"ResourceActivity\", schema);\n","import mongoose from \"mongoose\";\n\nimport { EnumOSPlatform, EnumResourceType } from \"src/enums\";\nimport { TesterType } from \"src/types\";\n\nimport { CategorySchema } from \"./global\";\n\nconst MongooseSchema = mongoose.Schema;\n\nconst TesterSchema = new MongooseSchema<TesterType>(\n {\n active: { default: false, required: true, type: Boolean },\n categories: [CategorySchema],\n companyName: { required: true, type: String },\n email: { required: true, type: String },\n firstName: { required: true, type: String },\n lastName: { required: true, type: String },\n osType: {\n enum: Object.values(EnumOSPlatform),\n required: true,\n type: String,\n },\n region: { required: true, type: String },\n resourceType: {\n enum: Object.values(EnumResourceType),\n required: true,\n type: String,\n },\n },\n {\n timestamps: true,\n },\n);\n\nexport const TesterModel =\n (mongoose.models.Tester as mongoose.Model<TesterType>) ||\n mongoose.model<TesterType>(\"Tester\", TesterSchema);\n","import mongoose from \"mongoose\";\n\nimport { EnumOSPlatform, EnumUserLicence, EnumUserRole } from \"src/enums\";\nimport { ObjectId, UserActivityEvent, UserType } from \"src/types\";\n\nimport {\n partnersSchema,\n ResourceImageTypeSchema,\n termsAgreementSchema,\n} from \"./global\";\n\nconst MongooseSchema = mongoose.Schema;\n\nexport type SchemaUserActivityEvent = Omit<UserActivityEvent, \"resourceId\"> & {\n resourceId: ObjectId;\n};\n\nexport type SchemaUserType = Omit<\n UserType,\n \"vendor\" | \"events\" | \"userActivity\" | \"_id\"\n> & {\n _id: ObjectId;\n vendor: ObjectId;\n events: ObjectId[];\n userActivity: {\n favourites: {\n events: ObjectId[];\n vendors: ObjectId[];\n };\n interested: {\n events: SchemaUserActivityEvent[];\n };\n going: {\n events: SchemaUserActivityEvent[];\n };\n present: {\n events: SchemaUserActivityEvent[];\n };\n };\n};\n\nconst userActivityEventSchema = new MongooseSchema<SchemaUserActivityEvent>(\n {\n resourceId: {\n ref: \"Event\",\n required: false,\n type: mongoose.Schema.Types.ObjectId,\n },\n startDate: { required: false, type: String },\n startTime: { required: false, type: String },\n },\n { _id: false },\n);\n\nconst userActivityFavouritesSchema = new MongooseSchema(\n {\n events: {\n ref: \"Event\",\n required: false,\n type: [mongoose.Schema.Types.ObjectId],\n },\n vendors: {\n ref: \"Vendor\",\n required: false,\n type: [mongoose.Schema.Types.ObjectId],\n },\n },\n { _id: false },\n);\n\n/**\n * This is the schema for the user type.\n * It is used to define the structure of the user type in the database.\n * The schema is used by Mongoose to create a model for the user type.\n */\nconst schema = new MongooseSchema<SchemaUserType>(\n {\n active: { default: false, required: true, type: Boolean },\n avatar: ResourceImageTypeSchema,\n deletedAt: { default: null, required: false, type: Date },\n email: { required: true, type: String },\n events: {\n ref: \"Event\",\n required: false,\n type: [mongoose.Schema.Types.ObjectId],\n },\n firstName: { required: true, type: String },\n isTester: { default: false, required: false, type: Boolean },\n lastName: { required: true, type: String },\n licences: {\n enum: Object.values(EnumUserLicence),\n required: false,\n type: [String],\n },\n partners: {\n required: false,\n type: [partnersSchema],\n },\n password: { required: true, type: String },\n platform: {\n enum: Object.values(EnumOSPlatform),\n required: false,\n type: String,\n },\n preferredRegion: {\n required: true,\n type: String,\n },\n refreshToken: {\n required: false,\n type: String,\n },\n role: {\n default: EnumUserRole.CUSTOMER,\n enum: Object.values(EnumUserRole),\n required: true,\n type: String,\n },\n termsAgreement: termsAgreementSchema,\n userActivity: {\n favourites: {\n default: () => ({ events: [], vendors: [] }),\n type: userActivityFavouritesSchema,\n },\n going: {\n events: [userActivityEventSchema],\n },\n interested: {\n events: [userActivityEventSchema],\n },\n present: {\n events: [userActivityEventSchema],\n },\n },\n vendor: {\n ref: \"Vendor\",\n required: false,\n type: mongoose.Schema.Types.ObjectId,\n },\n },\n { timestamps: true },\n);\n\nschema.index({ \"partners.email\": 1 });\n\nexport const UserModel =\n (mongoose.models.User as mongoose.Model<SchemaUserType>) ||\n mongoose.model<SchemaUserType>(\"User\", schema);\n","import mongoose from \"mongoose\";\n\nconst MongooseSchema = mongoose.Schema;\n\nexport interface VerificationTokenType {\n email: string;\n verificationToken: string;\n createdAt: Date;\n}\n\nconst schema = new MongooseSchema<VerificationTokenType>(\n {\n createdAt: {\n default: Date.now,\n expires: 24 * 60 * 60, // 24 hours in seconds (MongoDB TTL expects seconds)\n required: true,\n type: Date,\n }, // Token expires after 1 day\n email: { required: true, type: String },\n verificationToken: { required: true, type: String },\n },\n { timestamps: true },\n);\n\nexport const VerificationTokenModel =\n (mongoose.models\n .VerificationToken as mongoose.Model<VerificationTokenType>) ||\n mongoose.model<VerificationTokenType>(\"VerificationToken\", schema);\n","import mongoose from \"mongoose\";\n\nimport { EnumVendorType } from \"src/enums\";\nimport { ObjectId, VendorMenuType, VendorType } from \"src/types\";\n\nimport { baseResourceFields, CategorySchema, SchemaOwnerType } from \"../global\";\n\nconst MongooseSchema = mongoose.Schema;\n\nconst MenuTypeSchema = new MongooseSchema<VendorMenuType>(\n {\n description: { required: false, type: String },\n name: { required: false, type: String },\n price: { required: false, type: Number },\n productGroups: { required: false, type: [String] },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nconst LocationsSchema = new MongooseSchema<VendorType[\"locations\"]>(\n {\n dateTime: {\n endDate: { required: false, type: String },\n endTime: { required: false, type: String },\n startDate: { required: false, type: String },\n startTime: { required: false, type: String },\n },\n description: { required: false, type: String },\n location: {\n city: { required: false, type: String },\n coordinates: {\n required: false,\n type: [Number], // [longitude, latitude]\n },\n country: { required: false, type: String },\n fullAddress: { required: false, type: String },\n latitude: { required: false, type: Number },\n longitude: { required: false, type: Number },\n region: { required: false, type: String },\n type: { required: false, type: String }, // Mongoose GeoJSON type\n },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nexport type SchemaVendorType = Omit<\n VendorType,\n \"vendorInfoId\" | \"owner\" | \"adIds\"\n> & {\n adIds?: ObjectId[];\n owner: SchemaOwnerType;\n vendorInfoId: ObjectId;\n};\n\nconst schema = new MongooseSchema<SchemaVendorType>(\n {\n ...baseResourceFields, // Importing base resource fields from global.ts\n availability: {\n corporate: { default: false, required: false, type: Boolean },\n private: { default: false, required: false, type: Boolean },\n school: { default: false, required: false, type: Boolean },\n },\n categories: [CategorySchema],\n locations: [LocationsSchema],\n multiLocation: { required: true, type: Boolean },\n products: [MenuTypeSchema],\n vendorInfoId: {\n ref: \"VendorInfo\",\n required: false,\n type: mongoose.Schema.Types.ObjectId,\n },\n vendorType: {\n enum: Object.values(EnumVendorType),\n required: true,\n type: String,\n },\n },\n { timestamps: true },\n);\n\n// 🔹 Add indexes to speed up regex-based searches\nschema.index({ name: 1 });\nschema.index({ description: 1 });\nschema.index({ region: 1 });\nschema.index({ \"categories.name\": 1 });\nschema.index({ \"partners.email\": 1 });\n\nexport const VendorModel =\n (mongoose.models.Vendor as mongoose.Model<SchemaVendorType>) ||\n mongoose.model<SchemaVendorType>(\"Vendor\", schema);\n","import mongoose from \"mongoose\";\n\nimport { EnumFoodFlavor } from \"src/enums\";\nimport { ObjectId, VendorAttributes, VendorInfoType } from \"src/types\";\n\nimport { ResourceImageTypeSchema } from \"../global\";\n\nconst MongooseSchema = mongoose.Schema;\n\nexport type SchemaVendorInfoType = Omit<VendorInfoType, \"vendorId\"> & {\n vendorId: ObjectId;\n};\n\nconst AttributesSchema = new MongooseSchema<VendorAttributes>(\n {\n details: { required: false, type: String },\n isRequired: { default: false, required: true, type: Boolean },\n },\n { _id: false },\n);\n\nconst schema = new MongooseSchema<SchemaVendorInfoType>(\n {\n compliance: {\n foodBeverageLicense: { default: false, required: false, type: Boolean },\n liabilityInsurance: { default: false, required: false, type: Boolean },\n },\n documents: [ResourceImageTypeSchema],\n product: {\n foodFlavors: {\n enum: Object.values(EnumFoodFlavor),\n required: true,\n type: [String],\n },\n packaging: { required: true, type: [String] },\n priceRange: {\n max: { required: true, type: Number },\n min: { required: true, type: Number },\n },\n producedIn: { required: true, type: [String] },\n },\n requirements: {\n electricity: AttributesSchema,\n gazebo: AttributesSchema,\n table: AttributesSchema,\n },\n stallInfo: {\n size: {\n depth: { required: true, type: Number },\n width: { required: true, type: Number },\n },\n },\n vendorId: {\n ref: \"Vendor\",\n required: true,\n type: mongoose.Schema.Types.ObjectId,\n },\n },\n { timestamps: true },\n);\n\nexport const VendorInfoModel =\n (mongoose.models.VendorInfo as mongoose.Model<SchemaVendorInfoType>) ||\n mongoose.model<SchemaVendorInfoType>(\"VendorInfo\", schema);\n","import mongoose from \"mongoose\";\n\nimport { EnumEventType } from \"src/enums\";\nimport { DateTimeType, EventType, LocationType, ObjectId } from \"src/types\";\n\nimport { baseResourceFields, SchemaOwnerType } from \"../global\";\n\nconst MongooseSchema = mongoose.Schema;\n\nconst locationsSchema = new MongooseSchema<LocationType>(\n {\n city: { required: true, type: String },\n coordinates: {\n required: true,\n type: [Number], // [longitude, latitude]\n },\n country: { required: true, type: String },\n fullAddress: { required: true, type: String },\n latitude: { required: true, type: Number },\n longitude: { required: true, type: Number },\n region: { required: true, type: String },\n type: {\n default: \"Point\",\n enum: [\"Point\"],\n required: true,\n type: String,\n },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nconst dateTimeSchema = new MongooseSchema<DateTimeType>(\n {\n endDate: { required: true, type: String },\n endTime: { required: true, type: String },\n startDate: { required: true, type: String },\n startTime: { required: true, type: String },\n },\n { _id: false }, // Prevents Mongoose from creating an additional _id field for subdocuments\n);\n\nexport type SchemaEventType = Omit<\n EventType,\n \"eventInfoId\" | \"owner\" | \"adIds\"\n> & {\n adIds?: ObjectId[];\n eventInfoId: ObjectId;\n owner: SchemaOwnerType;\n};\n\n/**\n * This is the schema for the event type.\n * It is used to define the structure of the event type in the database.\n * The schema is used by Mongoose to create a model for the event type.\n */\nconst schema = new MongooseSchema<SchemaEventType>(\n {\n ...baseResourceFields, // Importing base resource fields from global.ts\n dateTime: [dateTimeSchema],\n eventInfoId: {\n ref: \"EventInfo\",\n required: false,\n type: mongoose.Schema.Types.ObjectId,\n },\n eventType: {\n enum: Object.values(EnumEventType),\n required: true,\n type: String,\n },\n location: {\n required: true,\n type: locationsSchema,\n },\n nzbn: { required: true, type: String },\n provider: { required: false, type: String },\n rainOrShine: { required: true, type: Boolean },\n tags: { required: true, type: [String] },\n },\n { timestamps: true },\n);\n\n// 🔹 Add indexes to speed up regex-based searches\nschema.index({ name: 1 });\nschema.index({ description: 1 });\nschema.index({ region: 1 });\nschema.index({ location: \"2dsphere\" });\nschema.index({ tags: 1 });\nschema.index({ \"partners.email\": 1 });\n\nexport const EventModel =\n (mongoose.models.Event as mongoose.Model<SchemaEventType>) ||\n mongoose.model<SchemaEventType>(\"Event\", schema);\n"],"mappings":"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","names":["mongoose","mongoose","mongoose","MongooseSchema","mongoose","MongooseSchema","mongoose","MongooseSchema","mongoose","schema","mongoose","MongooseSchema","mongoose","mongoose","MongooseSchema","mongoose","schema","mongoose","MongooseSchema","mongoose","schema","mongoose","MongooseSchema","mongoose","mongoose","MongooseSchema","mongoose","schema","mongoose","MongooseSchema","schema","mongoose","MongooseSchema","mongoose","schema","mongoose","MongooseSchema","mongoose","schema","mongoose","MongooseSchema","mongoose","dateTimeSchema","schema"]}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { EnumResourceType, EnumOSPlatform } from './enums/index.js';
|
|
2
|
-
|
|
3
|
-
declare enum EnumActivity {
|
|
4
|
-
FAVORITE = "FAVORITE",
|
|
5
|
-
GOING = "GOING",
|
|
6
|
-
INTERESTED = "INTERESTED",
|
|
7
|
-
PRESENT = "PRESENT",
|
|
8
|
-
VIEW = "VIEW"
|
|
9
|
-
}
|
|
10
|
-
type ResourceActivityEntry = {
|
|
11
|
-
activityType: EnumActivity;
|
|
12
|
-
location: {
|
|
13
|
-
type: "Point";
|
|
14
|
-
coordinates: number[];
|
|
15
|
-
} | null;
|
|
16
|
-
startDate?: string | null;
|
|
17
|
-
startTime?: string | null;
|
|
18
|
-
timestamp: Date;
|
|
19
|
-
userAgent: EnumOSPlatform;
|
|
20
|
-
userId?: string | null;
|
|
21
|
-
};
|
|
22
|
-
type ResourceActivityType = {
|
|
23
|
-
_id: string;
|
|
24
|
-
resourceType: EnumResourceType;
|
|
25
|
-
resourceId: string;
|
|
26
|
-
activity: ResourceActivityEntry[];
|
|
27
|
-
};
|
|
28
|
-
type ResourceActivityInputType = {
|
|
29
|
-
resourceId: string;
|
|
30
|
-
resourceType: string;
|
|
31
|
-
activity: Omit<ResourceActivityEntry, "timestamp">;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
export { EnumActivity as E, type ResourceActivityType as R, type ResourceActivityEntry as a, type ResourceActivityInputType as b };
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { EnumResourceType, EnumOSPlatform } from './enums/index.mjs';
|
|
2
|
-
|
|
3
|
-
declare enum EnumActivity {
|
|
4
|
-
FAVORITE = "FAVORITE",
|
|
5
|
-
GOING = "GOING",
|
|
6
|
-
INTERESTED = "INTERESTED",
|
|
7
|
-
PRESENT = "PRESENT",
|
|
8
|
-
VIEW = "VIEW"
|
|
9
|
-
}
|
|
10
|
-
type ResourceActivityEntry = {
|
|
11
|
-
activityType: EnumActivity;
|
|
12
|
-
location: {
|
|
13
|
-
type: "Point";
|
|
14
|
-
coordinates: number[];
|
|
15
|
-
} | null;
|
|
16
|
-
startDate?: string | null;
|
|
17
|
-
startTime?: string | null;
|
|
18
|
-
timestamp: Date;
|
|
19
|
-
userAgent: EnumOSPlatform;
|
|
20
|
-
userId?: string | null;
|
|
21
|
-
};
|
|
22
|
-
type ResourceActivityType = {
|
|
23
|
-
_id: string;
|
|
24
|
-
resourceType: EnumResourceType;
|
|
25
|
-
resourceId: string;
|
|
26
|
-
activity: ResourceActivityEntry[];
|
|
27
|
-
};
|
|
28
|
-
type ResourceActivityInputType = {
|
|
29
|
-
resourceId: string;
|
|
30
|
-
resourceType: string;
|
|
31
|
-
activity: Omit<ResourceActivityEntry, "timestamp">;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
export { EnumActivity as E, type ResourceActivityType as R, type ResourceActivityEntry as a, type ResourceActivityInputType as b };
|
package/dist/service/index.cjs
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/service/index.ts
|
|
31
|
-
var service_exports = {};
|
|
32
|
-
__export(service_exports, {
|
|
33
|
-
connectToDatabase: () => connectToDatabase,
|
|
34
|
-
saveNotificationsInDb: () => saveNotificationsInDb
|
|
35
|
-
});
|
|
36
|
-
module.exports = __toCommonJS(service_exports);
|
|
37
|
-
|
|
38
|
-
// src/service/database.ts
|
|
39
|
-
var import_mongoose = __toESM(require("mongoose"));
|
|
40
|
-
|
|
41
|
-
// src/service/timezonePlugin.ts
|
|
42
|
-
var import_dayjs = __toESM(require("dayjs"));
|
|
43
|
-
var import_timezone = __toESM(require("dayjs/plugin/timezone"));
|
|
44
|
-
var import_utc = __toESM(require("dayjs/plugin/utc"));
|
|
45
|
-
import_dayjs.default.extend(import_utc.default);
|
|
46
|
-
import_dayjs.default.extend(import_timezone.default);
|
|
47
|
-
function timezonePlugin(schema2) {
|
|
48
|
-
if (!schema2.get("timestamps")) return;
|
|
49
|
-
const transform = (_doc, ret) => {
|
|
50
|
-
if (ret.createdAt)
|
|
51
|
-
ret.createdAt = (0, import_dayjs.default)(ret.createdAt).tz("Pacific/Auckland").format();
|
|
52
|
-
if (ret.updatedAt)
|
|
53
|
-
ret.updatedAt = (0, import_dayjs.default)(ret.updatedAt).tz("Pacific/Auckland").format();
|
|
54
|
-
return ret;
|
|
55
|
-
};
|
|
56
|
-
schema2.set("toJSON", { transform });
|
|
57
|
-
schema2.set("toObject", { transform });
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// src/service/database.ts
|
|
61
|
-
import_mongoose.default.plugin(timezonePlugin);
|
|
62
|
-
var connectToDatabase = async ({
|
|
63
|
-
appName,
|
|
64
|
-
dbName,
|
|
65
|
-
dbPassword,
|
|
66
|
-
dbUser,
|
|
67
|
-
mongodbUri
|
|
68
|
-
}) => {
|
|
69
|
-
try {
|
|
70
|
-
const mongoUri = mongodbUri ? mongodbUri : (
|
|
71
|
-
// Fallback to MongoDB Atlas connection string
|
|
72
|
-
`mongodb+srv://${dbUser}:${dbPassword}@${dbName}.mongodb.net/?retryWrites=true&w=majority&appName=${appName}`
|
|
73
|
-
);
|
|
74
|
-
await import_mongoose.default.connect(mongoUri);
|
|
75
|
-
const connectionType = mongodbUri ? "Local MongoDB" : "MongoDB Atlas";
|
|
76
|
-
console.log(
|
|
77
|
-
`${connectionType} connected from server/src/service/database.ts`
|
|
78
|
-
);
|
|
79
|
-
} catch (err) {
|
|
80
|
-
console.error("Error connecting to MongoDB:", err);
|
|
81
|
-
throw err;
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
// src/mongoose/Notification.ts
|
|
86
|
-
var import_mongoose2 = __toESM(require("mongoose"));
|
|
87
|
-
|
|
88
|
-
// src/enums/index.ts
|
|
89
|
-
var EnumNotificationResourceType = /* @__PURE__ */ ((EnumNotificationResourceType2) => {
|
|
90
|
-
EnumNotificationResourceType2["ADDED_AS_PARTNER_EVENT"] = "added_as_partner_event";
|
|
91
|
-
EnumNotificationResourceType2["ADDED_AS_PARTNER_VENDOR"] = "added_as_partner_vendor";
|
|
92
|
-
EnumNotificationResourceType2["APPROVED_EVENT"] = "approved_event";
|
|
93
|
-
EnumNotificationResourceType2["APPROVED_VENDOR"] = "approved_vendor";
|
|
94
|
-
EnumNotificationResourceType2["CREATED_EVENT"] = "created_event";
|
|
95
|
-
EnumNotificationResourceType2["CREATED_VENDOR"] = "created_vendor";
|
|
96
|
-
EnumNotificationResourceType2["EVENT_INVITE_VENDOR"] = "event_invite_vendor" /* EVENT_INVITE_VENDOR */;
|
|
97
|
-
EnumNotificationResourceType2["EVENT_STARTING_SOON"] = "event_starting_soon";
|
|
98
|
-
EnumNotificationResourceType2["NEW_CHAT_MESSAGE"] = "new_chat_message";
|
|
99
|
-
EnumNotificationResourceType2["VENDOR_APPLICATION_TO_EVENT"] = "vendor_application_to_event" /* VENDOR_APPLICATION_TO_EVENT */;
|
|
100
|
-
return EnumNotificationResourceType2;
|
|
101
|
-
})(EnumNotificationResourceType || {});
|
|
102
|
-
var EnumNotificationType = /* @__PURE__ */ ((EnumNotificationType2) => {
|
|
103
|
-
EnumNotificationType2["EVENT"] = "event" /* EVENT */;
|
|
104
|
-
EnumNotificationType2["VENDOR"] = "vendor" /* VENDOR */;
|
|
105
|
-
EnumNotificationType2["RELATION"] = "relation";
|
|
106
|
-
EnumNotificationType2["CHAT"] = "chat";
|
|
107
|
-
EnumNotificationType2["SYSTEM"] = "system";
|
|
108
|
-
return EnumNotificationType2;
|
|
109
|
-
})(EnumNotificationType || {});
|
|
110
|
-
|
|
111
|
-
// src/mongoose/Notification.ts
|
|
112
|
-
var MongooseSchema = import_mongoose2.default.Schema;
|
|
113
|
-
var schema = new MongooseSchema(
|
|
114
|
-
{
|
|
115
|
-
data: {
|
|
116
|
-
resourceId: { required: true, type: String },
|
|
117
|
-
resourceName: { required: true, type: String },
|
|
118
|
-
resourceType: {
|
|
119
|
-
enum: Object.values(EnumNotificationResourceType),
|
|
120
|
-
required: true,
|
|
121
|
-
type: String
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
isRead: { default: false, index: true, required: true, type: Boolean },
|
|
125
|
-
message: { required: true, type: String },
|
|
126
|
-
title: { required: true, type: String },
|
|
127
|
-
type: {
|
|
128
|
-
default: "system" /* SYSTEM */,
|
|
129
|
-
enum: Object.values(EnumNotificationType),
|
|
130
|
-
required: true,
|
|
131
|
-
type: String
|
|
132
|
-
},
|
|
133
|
-
userId: {
|
|
134
|
-
ref: "User",
|
|
135
|
-
required: true,
|
|
136
|
-
type: import_mongoose2.default.Schema.Types.ObjectId
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
|
-
{ timestamps: true }
|
|
140
|
-
);
|
|
141
|
-
schema.index({ isRead: 1, userId: 1 });
|
|
142
|
-
schema.index({ createdAt: -1, userId: 1 });
|
|
143
|
-
var NotificationModel = import_mongoose2.default.models.Notification || import_mongoose2.default.model("Notification", schema);
|
|
144
|
-
|
|
145
|
-
// src/service/saveNotificationsInDb.ts
|
|
146
|
-
async function saveNotificationsInDb(payload) {
|
|
147
|
-
const { data, message, title, type, userIds } = payload;
|
|
148
|
-
try {
|
|
149
|
-
const notifications = userIds.map((userId) => ({
|
|
150
|
-
data,
|
|
151
|
-
isRead: false,
|
|
152
|
-
message,
|
|
153
|
-
title,
|
|
154
|
-
type,
|
|
155
|
-
userId
|
|
156
|
-
}));
|
|
157
|
-
await NotificationModel.insertMany(notifications);
|
|
158
|
-
console.log(
|
|
159
|
-
`Created ${notifications.length} notifications for ${userIds.length} users`
|
|
160
|
-
);
|
|
161
|
-
return [...new Set(userIds)];
|
|
162
|
-
} catch (error) {
|
|
163
|
-
console.error("Failed to create notifications:", error);
|
|
164
|
-
return [];
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
168
|
-
0 && (module.exports = {
|
|
169
|
-
connectToDatabase,
|
|
170
|
-
saveNotificationsInDb
|
|
171
|
-
});
|
|
172
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/service/index.ts","../../src/service/database.ts","../../src/service/timezonePlugin.ts","../../src/mongoose/Notification.ts","../../src/enums/index.ts","../../src/service/saveNotificationsInDb.ts"],"sourcesContent":["export * from \"./database\";\nexport * from \"./saveNotificationsInDb\";\n","import mongoose from \"mongoose\";\n\nimport { timezonePlugin } from \"./timezonePlugin\";\n\nmongoose.plugin(timezonePlugin); // applies to all schemas\n\n/**\n * Connect to MongoDB using Mongoose.\n * Supports both local MongoDB (via MONGODB_URI) and MongoDB Atlas (via individual env vars).\n */\nexport const connectToDatabase = async ({\n appName,\n dbName,\n dbPassword,\n dbUser,\n mongodbUri,\n}: {\n appName: string;\n dbName: string;\n dbPassword: string;\n dbUser: string;\n mongodbUri: string;\n}) => {\n try {\n // Check if MONGODB_URI is provided (for local Docker MongoDB)\n const mongoUri = mongodbUri\n ? mongodbUri\n : // Fallback to MongoDB Atlas connection string\n `mongodb+srv://${dbUser}:${dbPassword}@${dbName}.mongodb.net/?retryWrites=true&w=majority&appName=${appName}`;\n\n await mongoose.connect(mongoUri);\n\n const connectionType = mongodbUri ? \"Local MongoDB\" : \"MongoDB Atlas\";\n console.log(\n `${connectionType} connected from server/src/service/database.ts`,\n );\n } catch (err) {\n console.error(\"Error connecting to MongoDB:\", err);\n throw err; // You can throw the error if you want to stop the server in case of connection failure\n }\n};\n","import dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\nimport { Schema } from \"mongoose\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport function timezonePlugin(schema: Schema) {\n if (!schema.get(\"timestamps\")) return;\n\n const transform = (_doc: any, ret: any) => {\n if (ret.createdAt)\n ret.createdAt = dayjs(ret.createdAt).tz(\"Pacific/Auckland\").format(); // ISO with +13:00 or +12:00 offset\n if (ret.updatedAt)\n ret.updatedAt = dayjs(ret.updatedAt).tz(\"Pacific/Auckland\").format();\n return ret;\n };\n\n schema.set(\"toJSON\", { transform });\n schema.set(\"toObject\", { transform });\n}\n","import mongoose from \"mongoose\";\n\nimport { EnumNotificationResourceType, EnumNotificationType } from \"src/enums\";\nimport {\n CreateBulkNotificationInput,\n NotificationType,\n ObjectId,\n} from \"src/types\";\n\nconst MongooseSchema = mongoose.Schema;\n\nexport type SchemaCreateBulkNotificationInput = Omit<\n CreateBulkNotificationInput,\n \"userIds\"\n> & {\n userIds: ObjectId[];\n};\n\nexport type SchemaNotificationType = Omit<NotificationType, \"userId\"> & {\n userId: ObjectId;\n};\n/**\n * Schema for storing in-app notifications\n * Each notification is tied to a specific user and can be marked as read/unread\n */\nconst schema = new MongooseSchema<SchemaNotificationType>(\n {\n data: {\n resourceId: { required: true, type: String },\n resourceName: { required: true, type: String },\n resourceType: {\n enum: Object.values(EnumNotificationResourceType),\n required: true,\n type: String,\n },\n },\n isRead: { default: false, index: true, required: true, type: Boolean },\n message: { required: true, type: String },\n title: { required: true, type: String },\n type: {\n default: EnumNotificationType.SYSTEM,\n enum: Object.values(EnumNotificationType),\n required: true,\n type: String,\n },\n userId: {\n ref: \"User\",\n required: true,\n type: mongoose.Schema.Types.ObjectId,\n },\n },\n { timestamps: true },\n);\n\n// Compound index for efficient queries\nschema.index({ isRead: 1, userId: 1 });\nschema.index({ createdAt: -1, userId: 1 });\n\nexport const NotificationModel =\n (mongoose.models.Notification as mongoose.Model<SchemaNotificationType>) ||\n mongoose.model<SchemaNotificationType>(\"Notification\", schema);\n","export enum EnumInviteStatus {\n ACCEPTED = \"Accepted\",\n COMPLETED = \"Completed\",\n EXPIRED = \"Expired\",\n NO_STATUS = \"No_Status\",\n PAID = \"Paid\",\n PENDING = \"Pending\",\n REJECTED = \"Rejected\",\n UNAVAILABLE = \"Unavailable\",\n WAITING = \"Waiting\",\n}\n\nexport enum EnumChatType {\n GROUP = \"group\",\n PRIVATE = \"private\",\n RELATION = \"relation\",\n}\n\nexport enum EnumPaymentMethod {\n CASH = \"cash\",\n EFTPOS = \"eftpos\",\n BANK_TRANSFER = \"bank_transfer\",\n PAYPAL = \"paypal\",\n STRIPE = \"stripe\",\n}\n\nexport enum EnumFoodFlavor {\n SALTY = \"Salty\",\n SAVOURY = \"Savoury\",\n SPICY = \"Spicy\",\n SWEET = \"Sweet\",\n}\n\nexport enum EnumResourceType {\n EVENT = \"event\",\n VENDOR = \"vendor\",\n}\n\nexport enum EnumEventType {\n EXPO = \"Expo\",\n FAIR = \"Fair\",\n FESTIVAL = \"Festival\",\n MARKET = \"Market\",\n}\n\nexport enum EnumVendorType {\n STALLHOLDER = \"Stallholder\",\n SHOP = \"Shop\",\n CHARITY = \"Charity\",\n}\n\nexport enum EnumOSPlatform {\n ANDROID = \"android\",\n IOS = \"ios\",\n WEB = \"web\",\n}\n\nexport enum EnumRelationResource {\n EVENT_INVITE_VENDOR = \"event_invite_vendor\",\n VENDOR_APPLICATION_TO_EVENT = \"vendor_application_to_event\",\n}\n\nexport enum EnumNotificationResourceType {\n ADDED_AS_PARTNER_EVENT = \"added_as_partner_event\",\n ADDED_AS_PARTNER_VENDOR = \"added_as_partner_vendor\",\n APPROVED_EVENT = \"approved_event\",\n APPROVED_VENDOR = \"approved_vendor\",\n CREATED_EVENT = \"created_event\",\n CREATED_VENDOR = \"created_vendor\",\n EVENT_INVITE_VENDOR = EnumRelationResource.EVENT_INVITE_VENDOR,\n EVENT_STARTING_SOON = \"event_starting_soon\",\n NEW_CHAT_MESSAGE = \"new_chat_message\",\n VENDOR_APPLICATION_TO_EVENT = EnumRelationResource.VENDOR_APPLICATION_TO_EVENT,\n}\n\nexport enum EnumNotificationType {\n EVENT = EnumResourceType.EVENT,\n VENDOR = EnumResourceType.VENDOR,\n RELATION = \"relation\",\n CHAT = \"chat\",\n SYSTEM = \"system\",\n}\n\nexport enum EnumRegions {\n Auckland = \"Auckland\",\n BayOfPlentyGisborne = \"Bay of Plenty & Gisborne\",\n Canterbury = \"Canterbury\",\n HawkesBay = \"Hawke's Bay\",\n ManawatuWanganui = \"Manawatu-Wanganui\",\n MarlboroughNelson = \"Marlborough & Nelson\",\n Northland = \"Northland\",\n SouthlandOtago = \"Southland & Otago\",\n Taranaki = \"Taranaki\",\n Waikato = \"Waikato\",\n Wellington = \"Wellington\",\n TasmanWestCoast = \"Tasman & West Coast\",\n}\n\nexport enum ImageTypeEnum {\n AVATAR = \"avatar\",\n COVER = \"cover\",\n IMAGE = \"image\",\n LOGO = \"logo\",\n}\n\nexport enum EnumUserLicence {\n PRO_EVENT = \"pro_event\",\n PRO_PLUS_EVENT = \"pro_plus_event\",\n PRO_PLUS_VENDOR = \"pro_plus_vendor\",\n PRO_VENDOR = \"pro_vendor\",\n STANDARD_EVENT = \"standard_event\",\n STANDARD_VENDOR = \"standard_vendor\",\n}\n\nexport enum EnumUserRole {\n ADMIN = \"admin\",\n CUSTOMER = \"customer\",\n MARKETING = \"marketing\",\n MODERATOR = \"moderator\",\n SUPPORT = \"support\",\n}\n\nexport enum EnumSocialMedia {\n FACEBOOK = \"facebook\",\n INSTAGRAM = \"instagram\",\n TIKTOK = \"tiktok\",\n TWITTER = \"twitter\",\n WEBSITE = \"website\",\n YOUTUBE = \"youtube\",\n}\n","import {\n SchemaCreateBulkNotificationInput,\n NotificationModel,\n} from \"src/mongoose/Notification\";\nimport { ObjectId } from \"src/types\";\n\n/**\n * Create notifications in the database for multiple users\n * This is typically called when sending push notifications\n */\nexport async function saveNotificationsInDb(\n payload: SchemaCreateBulkNotificationInput,\n): Promise<ObjectId[]> {\n const { data, message, title, type, userIds } = payload;\n try {\n const notifications = userIds.map((userId) => ({\n data,\n isRead: false,\n message,\n title,\n type,\n userId,\n }));\n\n // Save notifications to database\n await NotificationModel.insertMany(notifications);\n console.log(\n `Created ${notifications.length} notifications for ${userIds.length} users`,\n );\n\n return [...new Set(userIds)];\n } catch (error) {\n console.error(\"Failed to create notifications:\", error);\n return [];\n //throw new Error(`Failed to create notifications: ${error}`);\n }\n}\n"],"mappings":"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","names":["dayjs","utc","timezone","schema","mongoose","import_mongoose","EnumNotificationResourceType","EnumNotificationType","mongoose"]}
|
package/dist/service/index.d.mts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { G as SchemaCreateBulkNotificationInput, q as ObjectId } from '../global-j9FEfVZs.mjs';
|
|
2
|
-
import 'express';
|
|
3
|
-
import 'mongoose';
|
|
4
|
-
import 'react-hook-form';
|
|
5
|
-
import '../enums/index.mjs';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Connect to MongoDB using Mongoose.
|
|
9
|
-
* Supports both local MongoDB (via MONGODB_URI) and MongoDB Atlas (via individual env vars).
|
|
10
|
-
*/
|
|
11
|
-
declare const connectToDatabase: ({ appName, dbName, dbPassword, dbUser, mongodbUri, }: {
|
|
12
|
-
appName: string;
|
|
13
|
-
dbName: string;
|
|
14
|
-
dbPassword: string;
|
|
15
|
-
dbUser: string;
|
|
16
|
-
mongodbUri: string;
|
|
17
|
-
}) => Promise<void>;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Create notifications in the database for multiple users
|
|
21
|
-
* This is typically called when sending push notifications
|
|
22
|
-
*/
|
|
23
|
-
declare function saveNotificationsInDb(payload: SchemaCreateBulkNotificationInput): Promise<ObjectId[]>;
|
|
24
|
-
|
|
25
|
-
export { connectToDatabase, saveNotificationsInDb };
|
package/dist/service/index.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { G as SchemaCreateBulkNotificationInput, q as ObjectId } from '../global-DvxKMAQD.js';
|
|
2
|
-
import 'express';
|
|
3
|
-
import 'mongoose';
|
|
4
|
-
import 'react-hook-form';
|
|
5
|
-
import '../enums/index.js';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Connect to MongoDB using Mongoose.
|
|
9
|
-
* Supports both local MongoDB (via MONGODB_URI) and MongoDB Atlas (via individual env vars).
|
|
10
|
-
*/
|
|
11
|
-
declare const connectToDatabase: ({ appName, dbName, dbPassword, dbUser, mongodbUri, }: {
|
|
12
|
-
appName: string;
|
|
13
|
-
dbName: string;
|
|
14
|
-
dbPassword: string;
|
|
15
|
-
dbUser: string;
|
|
16
|
-
mongodbUri: string;
|
|
17
|
-
}) => Promise<void>;
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Create notifications in the database for multiple users
|
|
21
|
-
* This is typically called when sending push notifications
|
|
22
|
-
*/
|
|
23
|
-
declare function saveNotificationsInDb(payload: SchemaCreateBulkNotificationInput): Promise<ObjectId[]>;
|
|
24
|
-
|
|
25
|
-
export { connectToDatabase, saveNotificationsInDb };
|
package/dist/service/index.mjs
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
NotificationModel
|
|
3
|
-
} from "../chunk-WWL2Q5DN.mjs";
|
|
4
|
-
import "../chunk-NNS747QT.mjs";
|
|
5
|
-
|
|
6
|
-
// src/service/database.ts
|
|
7
|
-
import mongoose from "mongoose";
|
|
8
|
-
|
|
9
|
-
// src/service/timezonePlugin.ts
|
|
10
|
-
import dayjs from "dayjs";
|
|
11
|
-
import timezone from "dayjs/plugin/timezone";
|
|
12
|
-
import utc from "dayjs/plugin/utc";
|
|
13
|
-
dayjs.extend(utc);
|
|
14
|
-
dayjs.extend(timezone);
|
|
15
|
-
function timezonePlugin(schema) {
|
|
16
|
-
if (!schema.get("timestamps")) return;
|
|
17
|
-
const transform = (_doc, ret) => {
|
|
18
|
-
if (ret.createdAt)
|
|
19
|
-
ret.createdAt = dayjs(ret.createdAt).tz("Pacific/Auckland").format();
|
|
20
|
-
if (ret.updatedAt)
|
|
21
|
-
ret.updatedAt = dayjs(ret.updatedAt).tz("Pacific/Auckland").format();
|
|
22
|
-
return ret;
|
|
23
|
-
};
|
|
24
|
-
schema.set("toJSON", { transform });
|
|
25
|
-
schema.set("toObject", { transform });
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// src/service/database.ts
|
|
29
|
-
mongoose.plugin(timezonePlugin);
|
|
30
|
-
var connectToDatabase = async ({
|
|
31
|
-
appName,
|
|
32
|
-
dbName,
|
|
33
|
-
dbPassword,
|
|
34
|
-
dbUser,
|
|
35
|
-
mongodbUri
|
|
36
|
-
}) => {
|
|
37
|
-
try {
|
|
38
|
-
const mongoUri = mongodbUri ? mongodbUri : (
|
|
39
|
-
// Fallback to MongoDB Atlas connection string
|
|
40
|
-
`mongodb+srv://${dbUser}:${dbPassword}@${dbName}.mongodb.net/?retryWrites=true&w=majority&appName=${appName}`
|
|
41
|
-
);
|
|
42
|
-
await mongoose.connect(mongoUri);
|
|
43
|
-
const connectionType = mongodbUri ? "Local MongoDB" : "MongoDB Atlas";
|
|
44
|
-
console.log(
|
|
45
|
-
`${connectionType} connected from server/src/service/database.ts`
|
|
46
|
-
);
|
|
47
|
-
} catch (err) {
|
|
48
|
-
console.error("Error connecting to MongoDB:", err);
|
|
49
|
-
throw err;
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
// src/service/saveNotificationsInDb.ts
|
|
54
|
-
async function saveNotificationsInDb(payload) {
|
|
55
|
-
const { data, message, title, type, userIds } = payload;
|
|
56
|
-
try {
|
|
57
|
-
const notifications = userIds.map((userId) => ({
|
|
58
|
-
data,
|
|
59
|
-
isRead: false,
|
|
60
|
-
message,
|
|
61
|
-
title,
|
|
62
|
-
type,
|
|
63
|
-
userId
|
|
64
|
-
}));
|
|
65
|
-
await NotificationModel.insertMany(notifications);
|
|
66
|
-
console.log(
|
|
67
|
-
`Created ${notifications.length} notifications for ${userIds.length} users`
|
|
68
|
-
);
|
|
69
|
-
return [...new Set(userIds)];
|
|
70
|
-
} catch (error) {
|
|
71
|
-
console.error("Failed to create notifications:", error);
|
|
72
|
-
return [];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
export {
|
|
76
|
-
connectToDatabase,
|
|
77
|
-
saveNotificationsInDb
|
|
78
|
-
};
|
|
79
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/service/database.ts","../../src/service/timezonePlugin.ts","../../src/service/saveNotificationsInDb.ts"],"sourcesContent":["import mongoose from \"mongoose\";\n\nimport { timezonePlugin } from \"./timezonePlugin\";\n\nmongoose.plugin(timezonePlugin); // applies to all schemas\n\n/**\n * Connect to MongoDB using Mongoose.\n * Supports both local MongoDB (via MONGODB_URI) and MongoDB Atlas (via individual env vars).\n */\nexport const connectToDatabase = async ({\n appName,\n dbName,\n dbPassword,\n dbUser,\n mongodbUri,\n}: {\n appName: string;\n dbName: string;\n dbPassword: string;\n dbUser: string;\n mongodbUri: string;\n}) => {\n try {\n // Check if MONGODB_URI is provided (for local Docker MongoDB)\n const mongoUri = mongodbUri\n ? mongodbUri\n : // Fallback to MongoDB Atlas connection string\n `mongodb+srv://${dbUser}:${dbPassword}@${dbName}.mongodb.net/?retryWrites=true&w=majority&appName=${appName}`;\n\n await mongoose.connect(mongoUri);\n\n const connectionType = mongodbUri ? \"Local MongoDB\" : \"MongoDB Atlas\";\n console.log(\n `${connectionType} connected from server/src/service/database.ts`,\n );\n } catch (err) {\n console.error(\"Error connecting to MongoDB:\", err);\n throw err; // You can throw the error if you want to stop the server in case of connection failure\n }\n};\n","import dayjs from \"dayjs\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport utc from \"dayjs/plugin/utc\";\nimport { Schema } from \"mongoose\";\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\nexport function timezonePlugin(schema: Schema) {\n if (!schema.get(\"timestamps\")) return;\n\n const transform = (_doc: any, ret: any) => {\n if (ret.createdAt)\n ret.createdAt = dayjs(ret.createdAt).tz(\"Pacific/Auckland\").format(); // ISO with +13:00 or +12:00 offset\n if (ret.updatedAt)\n ret.updatedAt = dayjs(ret.updatedAt).tz(\"Pacific/Auckland\").format();\n return ret;\n };\n\n schema.set(\"toJSON\", { transform });\n schema.set(\"toObject\", { transform });\n}\n","import {\n SchemaCreateBulkNotificationInput,\n NotificationModel,\n} from \"src/mongoose/Notification\";\nimport { ObjectId } from \"src/types\";\n\n/**\n * Create notifications in the database for multiple users\n * This is typically called when sending push notifications\n */\nexport async function saveNotificationsInDb(\n payload: SchemaCreateBulkNotificationInput,\n): Promise<ObjectId[]> {\n const { data, message, title, type, userIds } = payload;\n try {\n const notifications = userIds.map((userId) => ({\n data,\n isRead: false,\n message,\n title,\n type,\n userId,\n }));\n\n // Save notifications to database\n await NotificationModel.insertMany(notifications);\n console.log(\n `Created ${notifications.length} notifications for ${userIds.length} users`,\n );\n\n return [...new Set(userIds)];\n } catch (error) {\n console.error(\"Failed to create notifications:\", error);\n return [];\n //throw new Error(`Failed to create notifications: ${error}`);\n }\n}\n"],"mappings":";;;;;;AAAA,OAAO,cAAc;;;ACArB,OAAO,WAAW;AAClB,OAAO,cAAc;AACrB,OAAO,SAAS;AAGhB,MAAM,OAAO,GAAG;AAChB,MAAM,OAAO,QAAQ;AAEd,SAAS,eAAe,QAAgB;AAC7C,MAAI,CAAC,OAAO,IAAI,YAAY,EAAG;AAE/B,QAAM,YAAY,CAAC,MAAW,QAAa;AACzC,QAAI,IAAI;AACN,UAAI,YAAY,MAAM,IAAI,SAAS,EAAE,GAAG,kBAAkB,EAAE,OAAO;AACrE,QAAI,IAAI;AACN,UAAI,YAAY,MAAM,IAAI,SAAS,EAAE,GAAG,kBAAkB,EAAE,OAAO;AACrE,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,UAAU,EAAE,UAAU,CAAC;AAClC,SAAO,IAAI,YAAY,EAAE,UAAU,CAAC;AACtC;;;ADjBA,SAAS,OAAO,cAAc;AAMvB,IAAM,oBAAoB,OAAO;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAMM;AACJ,MAAI;AAEF,UAAM,WAAW,aACb;AAAA;AAAA,MAEA,iBAAiB,MAAM,IAAI,UAAU,IAAI,MAAM,qDAAqD,OAAO;AAAA;AAE/G,UAAM,SAAS,QAAQ,QAAQ;AAE/B,UAAM,iBAAiB,aAAa,kBAAkB;AACtD,YAAQ;AAAA,MACN,GAAG,cAAc;AAAA,IACnB;AAAA,EACF,SAAS,KAAK;AACZ,YAAQ,MAAM,gCAAgC,GAAG;AACjD,UAAM;AAAA,EACR;AACF;;;AE9BA,eAAsB,sBACpB,SACqB;AACrB,QAAM,EAAE,MAAM,SAAS,OAAO,MAAM,QAAQ,IAAI;AAChD,MAAI;AACF,UAAM,gBAAgB,QAAQ,IAAI,CAAC,YAAY;AAAA,MAC7C;AAAA,MACA,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE;AAGF,UAAM,kBAAkB,WAAW,aAAa;AAChD,YAAQ;AAAA,MACN,WAAW,cAAc,MAAM,sBAAsB,QAAQ,MAAM;AAAA,IACrE;AAEA,WAAO,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC;AAAA,EAC7B,SAAS,OAAO;AACd,YAAQ,MAAM,mCAAmC,KAAK;AACtD,WAAO,CAAC;AAAA,EAEV;AACF;","names":[]}
|