@experts_hub/shared 1.0.103 → 1.0.105

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.
@@ -11,3 +11,6 @@ export * from './job-role.entity';
11
11
  export * from './job-entity';
12
12
  export * from './job-skill.entity';
13
13
  export * from './bank-details.entity';
14
+ export * from './plan.entity';
15
+ export * from './feature.entity';
16
+ export * from './system-preference.entity';
@@ -0,0 +1,8 @@
1
+ import { BaseEntity } from "./base.entity";
2
+ import { User } from "./user.entity";
3
+ export declare class SystemPreference extends BaseEntity {
4
+ userId: number;
5
+ user: User;
6
+ key: string;
7
+ value: boolean;
8
+ }
@@ -6,6 +6,7 @@ import { FreelancerProfile } from "./freelancer-profile.entity";
6
6
  import { CompanyProfile } from "./company-profile.entity";
7
7
  import { Job } from "./job-entity";
8
8
  import { BankDetail } from "./bank-details.entity";
9
+ import { SystemPreference } from "./system-preference.entity";
9
10
  export declare enum AccountType {
10
11
  ADMIN = "ADMIN",
11
12
  SUB_ADMIN = "SUB_ADMIN",
@@ -55,4 +56,5 @@ export declare class User extends BaseEntity {
55
56
  companyProfile: CompanyProfile;
56
57
  jobs: Job[];
57
58
  bankDetail: BankDetail[];
59
+ systemPreference: SystemPreference[];
58
60
  }
package/dist/index.d.mts CHANGED
@@ -385,6 +385,13 @@ declare class BankDetail extends BaseEntity {
385
385
  accountScope: BankAccountScopeEnum;
386
386
  }
387
387
 
388
+ declare class SystemPreference extends BaseEntity {
389
+ userId: number;
390
+ user: User;
391
+ key: string;
392
+ value: boolean;
393
+ }
394
+
388
395
  declare enum AccountType {
389
396
  ADMIN = "ADMIN",
390
397
  SUB_ADMIN = "SUB_ADMIN",
@@ -434,6 +441,7 @@ declare class User extends BaseEntity {
434
441
  companyProfile: CompanyProfile;
435
442
  jobs: Job[];
436
443
  bankDetail: BankDetail[];
444
+ systemPreference: SystemPreference[];
437
445
  }
438
446
 
439
447
  declare enum KindOfHire {
@@ -683,6 +691,20 @@ interface IFetchPlanResponse {
683
691
  data: any;
684
692
  }
685
693
 
694
+ declare const SYSTEM_PREFERENCES_PATTERN: {
695
+ fetchSystemPreferences: string;
696
+ updateSystemPreferences: string;
697
+ };
698
+
699
+ declare enum SystemPreferenceKey {
700
+ EMAIL_NOTIFICATION = "EMAIL_NOTIFICATION",
701
+ DARK_MODE = "DARK_MODE"
702
+ }
703
+ declare class SystemPreferenceDto {
704
+ value: boolean;
705
+ key: SystemPreferenceKey;
706
+ }
707
+
686
708
  declare const UserTCPAdapter: () => MicroserviceOptions;
687
709
 
688
710
  declare const JobTCPAdapter: () => MicroserviceOptions;
@@ -719,4 +741,18 @@ declare class JobRoles extends BaseEntity {
719
741
  isActive: boolean;
720
742
  }
721
743
 
722
- export { AUTHENTICATION_PATTERN, AccountStatus, AccountType, BANK_PATTERN, BankAccountScope, BankAccountScopeEnum, BankAccountTypeEnum, BankDetail, BaseEntity, CLIENT_PROFILE_PATTERN, ClientChangePasswordDto, ClientCreateAccountDto, ClientProfileQuestionDto, CompanyProfile, CreateQuestionDto, CreateSubAdminDto, EmploymentType, FreelancerBankDetailsDto, FreelancerChangePasswordDto, FreelancerCreateAccountDto, FreelancerDevelopmentPreferenceDto, FreelancerProfile, FreelancerProfileQuestionDto, FreelancerUploadResumeDto, FreelancerWorkShowcaseDto, FromUsOn, type IAttachPermissionsToSubAdminResponse, type ICreateSubAdminPayload, type ICreateSubAdminResponse, type IDeleteSubAdminResponse, type IFetchClientProfileQuery, type IFetchClientProfileResponse, type IFetchPlanResponse, type IFetchQuestionQuery, type IFetchQuestionResponse, type IFetchSubAdminByIdQuery, type IFetchSubAdminByIdResponse, type IFetchSubAdminQuery, type IFetchSubAdminResponse, type IUpdateClientLogoPayload, type IUpdateClientLogoResponse, type IUpdateClientPasswordPayload, type IUpdateClientProfilePayload, type IUpdateClientProfileResponse, type IUpdateSubAdminAccountStatusPayload, type IUpdateSubAdminAccountStatusResponse, type IUpdateSubAdminPayload, type IUpdateSubAdminResponse, JOB_PATTERN, JOB_ROLE_PATTERN, Job, JobAdditionalCommentDto, JobBasicInformationDto, JobDescriptionDto, JobIdParamDto, JobLocation, JobLocationEnum, JobRMQAdapter, JobRoles, JobSkill, JobStatus, JobStatusDto, JobStatusEnum, JobTCPAdapter, KindOfHire, LoginDto, LogoutDto, ModeOfHire, ModeOfWork, NatureOfWork, NotificationRMQAdapter, NotificationTCPAdapter, ONBOARDING_PATTERN, OTP_PATTERN, OnboardingStepEnum, Otp, PLAN_PATTERN, PROFILE_PATTERN, Provider, QUESTION_PATTERN, Question, QuestionFor, RESUME_PARSER_PATTERN, RefreshDto, RefreshToken, ResumeParserLog, SUBADMIN_PATTERN, ScopeEnum, Skill, Step, TypeOfEmploymentEnum, UpdateCompanyProfileDto, UpdateSubAdminAccountStatusDto, UpdateSubAdminDto, User, UserRMQAdapter, UserTCPAdapter };
744
+ declare class Feature extends BaseEntity {
745
+ name: string;
746
+ plans: Plan[];
747
+ }
748
+
749
+ declare class Plan extends BaseEntity {
750
+ name: string;
751
+ description: string;
752
+ price: number;
753
+ billingPeriod: string;
754
+ isCurrent: boolean;
755
+ features: Feature[];
756
+ }
757
+
758
+ export { AUTHENTICATION_PATTERN, AccountStatus, AccountType, BANK_PATTERN, BankAccountScope, BankAccountScopeEnum, BankAccountTypeEnum, BankDetail, BaseEntity, CLIENT_PROFILE_PATTERN, ClientChangePasswordDto, ClientCreateAccountDto, ClientProfileQuestionDto, CompanyProfile, CreateQuestionDto, CreateSubAdminDto, EmploymentType, Feature, FreelancerBankDetailsDto, FreelancerChangePasswordDto, FreelancerCreateAccountDto, FreelancerDevelopmentPreferenceDto, FreelancerProfile, FreelancerProfileQuestionDto, FreelancerUploadResumeDto, FreelancerWorkShowcaseDto, FromUsOn, type IAttachPermissionsToSubAdminResponse, type ICreateSubAdminPayload, type ICreateSubAdminResponse, type IDeleteSubAdminResponse, type IFetchClientProfileQuery, type IFetchClientProfileResponse, type IFetchPlanResponse, type IFetchQuestionQuery, type IFetchQuestionResponse, type IFetchSubAdminByIdQuery, type IFetchSubAdminByIdResponse, type IFetchSubAdminQuery, type IFetchSubAdminResponse, type IUpdateClientLogoPayload, type IUpdateClientLogoResponse, type IUpdateClientPasswordPayload, type IUpdateClientProfilePayload, type IUpdateClientProfileResponse, type IUpdateSubAdminAccountStatusPayload, type IUpdateSubAdminAccountStatusResponse, type IUpdateSubAdminPayload, type IUpdateSubAdminResponse, JOB_PATTERN, JOB_ROLE_PATTERN, Job, JobAdditionalCommentDto, JobBasicInformationDto, JobDescriptionDto, JobIdParamDto, JobLocation, JobLocationEnum, JobRMQAdapter, JobRoles, JobSkill, JobStatus, JobStatusDto, JobStatusEnum, JobTCPAdapter, KindOfHire, LoginDto, LogoutDto, ModeOfHire, ModeOfWork, NatureOfWork, NotificationRMQAdapter, NotificationTCPAdapter, ONBOARDING_PATTERN, OTP_PATTERN, OnboardingStepEnum, Otp, PLAN_PATTERN, PROFILE_PATTERN, Plan, Provider, QUESTION_PATTERN, Question, QuestionFor, RESUME_PARSER_PATTERN, RefreshDto, RefreshToken, ResumeParserLog, SUBADMIN_PATTERN, SYSTEM_PREFERENCES_PATTERN, ScopeEnum, Skill, Step, SystemPreference, SystemPreferenceDto, SystemPreferenceKey, TypeOfEmploymentEnum, UpdateCompanyProfileDto, UpdateSubAdminAccountStatusDto, UpdateSubAdminDto, User, UserRMQAdapter, UserTCPAdapter };
package/dist/index.d.ts CHANGED
@@ -385,6 +385,13 @@ declare class BankDetail extends BaseEntity {
385
385
  accountScope: BankAccountScopeEnum;
386
386
  }
387
387
 
388
+ declare class SystemPreference extends BaseEntity {
389
+ userId: number;
390
+ user: User;
391
+ key: string;
392
+ value: boolean;
393
+ }
394
+
388
395
  declare enum AccountType {
389
396
  ADMIN = "ADMIN",
390
397
  SUB_ADMIN = "SUB_ADMIN",
@@ -434,6 +441,7 @@ declare class User extends BaseEntity {
434
441
  companyProfile: CompanyProfile;
435
442
  jobs: Job[];
436
443
  bankDetail: BankDetail[];
444
+ systemPreference: SystemPreference[];
437
445
  }
438
446
 
439
447
  declare enum KindOfHire {
@@ -683,6 +691,20 @@ interface IFetchPlanResponse {
683
691
  data: any;
684
692
  }
685
693
 
694
+ declare const SYSTEM_PREFERENCES_PATTERN: {
695
+ fetchSystemPreferences: string;
696
+ updateSystemPreferences: string;
697
+ };
698
+
699
+ declare enum SystemPreferenceKey {
700
+ EMAIL_NOTIFICATION = "EMAIL_NOTIFICATION",
701
+ DARK_MODE = "DARK_MODE"
702
+ }
703
+ declare class SystemPreferenceDto {
704
+ value: boolean;
705
+ key: SystemPreferenceKey;
706
+ }
707
+
686
708
  declare const UserTCPAdapter: () => MicroserviceOptions;
687
709
 
688
710
  declare const JobTCPAdapter: () => MicroserviceOptions;
@@ -719,4 +741,18 @@ declare class JobRoles extends BaseEntity {
719
741
  isActive: boolean;
720
742
  }
721
743
 
722
- export { AUTHENTICATION_PATTERN, AccountStatus, AccountType, BANK_PATTERN, BankAccountScope, BankAccountScopeEnum, BankAccountTypeEnum, BankDetail, BaseEntity, CLIENT_PROFILE_PATTERN, ClientChangePasswordDto, ClientCreateAccountDto, ClientProfileQuestionDto, CompanyProfile, CreateQuestionDto, CreateSubAdminDto, EmploymentType, FreelancerBankDetailsDto, FreelancerChangePasswordDto, FreelancerCreateAccountDto, FreelancerDevelopmentPreferenceDto, FreelancerProfile, FreelancerProfileQuestionDto, FreelancerUploadResumeDto, FreelancerWorkShowcaseDto, FromUsOn, type IAttachPermissionsToSubAdminResponse, type ICreateSubAdminPayload, type ICreateSubAdminResponse, type IDeleteSubAdminResponse, type IFetchClientProfileQuery, type IFetchClientProfileResponse, type IFetchPlanResponse, type IFetchQuestionQuery, type IFetchQuestionResponse, type IFetchSubAdminByIdQuery, type IFetchSubAdminByIdResponse, type IFetchSubAdminQuery, type IFetchSubAdminResponse, type IUpdateClientLogoPayload, type IUpdateClientLogoResponse, type IUpdateClientPasswordPayload, type IUpdateClientProfilePayload, type IUpdateClientProfileResponse, type IUpdateSubAdminAccountStatusPayload, type IUpdateSubAdminAccountStatusResponse, type IUpdateSubAdminPayload, type IUpdateSubAdminResponse, JOB_PATTERN, JOB_ROLE_PATTERN, Job, JobAdditionalCommentDto, JobBasicInformationDto, JobDescriptionDto, JobIdParamDto, JobLocation, JobLocationEnum, JobRMQAdapter, JobRoles, JobSkill, JobStatus, JobStatusDto, JobStatusEnum, JobTCPAdapter, KindOfHire, LoginDto, LogoutDto, ModeOfHire, ModeOfWork, NatureOfWork, NotificationRMQAdapter, NotificationTCPAdapter, ONBOARDING_PATTERN, OTP_PATTERN, OnboardingStepEnum, Otp, PLAN_PATTERN, PROFILE_PATTERN, Provider, QUESTION_PATTERN, Question, QuestionFor, RESUME_PARSER_PATTERN, RefreshDto, RefreshToken, ResumeParserLog, SUBADMIN_PATTERN, ScopeEnum, Skill, Step, TypeOfEmploymentEnum, UpdateCompanyProfileDto, UpdateSubAdminAccountStatusDto, UpdateSubAdminDto, User, UserRMQAdapter, UserTCPAdapter };
744
+ declare class Feature extends BaseEntity {
745
+ name: string;
746
+ plans: Plan[];
747
+ }
748
+
749
+ declare class Plan extends BaseEntity {
750
+ name: string;
751
+ description: string;
752
+ price: number;
753
+ billingPeriod: string;
754
+ isCurrent: boolean;
755
+ features: Feature[];
756
+ }
757
+
758
+ export { AUTHENTICATION_PATTERN, AccountStatus, AccountType, BANK_PATTERN, BankAccountScope, BankAccountScopeEnum, BankAccountTypeEnum, BankDetail, BaseEntity, CLIENT_PROFILE_PATTERN, ClientChangePasswordDto, ClientCreateAccountDto, ClientProfileQuestionDto, CompanyProfile, CreateQuestionDto, CreateSubAdminDto, EmploymentType, Feature, FreelancerBankDetailsDto, FreelancerChangePasswordDto, FreelancerCreateAccountDto, FreelancerDevelopmentPreferenceDto, FreelancerProfile, FreelancerProfileQuestionDto, FreelancerUploadResumeDto, FreelancerWorkShowcaseDto, FromUsOn, type IAttachPermissionsToSubAdminResponse, type ICreateSubAdminPayload, type ICreateSubAdminResponse, type IDeleteSubAdminResponse, type IFetchClientProfileQuery, type IFetchClientProfileResponse, type IFetchPlanResponse, type IFetchQuestionQuery, type IFetchQuestionResponse, type IFetchSubAdminByIdQuery, type IFetchSubAdminByIdResponse, type IFetchSubAdminQuery, type IFetchSubAdminResponse, type IUpdateClientLogoPayload, type IUpdateClientLogoResponse, type IUpdateClientPasswordPayload, type IUpdateClientProfilePayload, type IUpdateClientProfileResponse, type IUpdateSubAdminAccountStatusPayload, type IUpdateSubAdminAccountStatusResponse, type IUpdateSubAdminPayload, type IUpdateSubAdminResponse, JOB_PATTERN, JOB_ROLE_PATTERN, Job, JobAdditionalCommentDto, JobBasicInformationDto, JobDescriptionDto, JobIdParamDto, JobLocation, JobLocationEnum, JobRMQAdapter, JobRoles, JobSkill, JobStatus, JobStatusDto, JobStatusEnum, JobTCPAdapter, KindOfHire, LoginDto, LogoutDto, ModeOfHire, ModeOfWork, NatureOfWork, NotificationRMQAdapter, NotificationTCPAdapter, ONBOARDING_PATTERN, OTP_PATTERN, OnboardingStepEnum, Otp, PLAN_PATTERN, PROFILE_PATTERN, Plan, Provider, QUESTION_PATTERN, Question, QuestionFor, RESUME_PARSER_PATTERN, RefreshDto, RefreshToken, ResumeParserLog, SUBADMIN_PATTERN, SYSTEM_PREFERENCES_PATTERN, ScopeEnum, Skill, Step, SystemPreference, SystemPreferenceDto, SystemPreferenceKey, TypeOfEmploymentEnum, UpdateCompanyProfileDto, UpdateSubAdminAccountStatusDto, UpdateSubAdminDto, User, UserRMQAdapter, UserTCPAdapter };
package/dist/index.js CHANGED
@@ -44,6 +44,7 @@ __export(index_exports, {
44
44
  CreateQuestionDto: () => CreateQuestionDto,
45
45
  CreateSubAdminDto: () => CreateSubAdminDto,
46
46
  EmploymentType: () => EmploymentType,
47
+ Feature: () => Feature,
47
48
  FreelancerBankDetailsDto: () => FreelancerBankDetailsDto,
48
49
  FreelancerChangePasswordDto: () => FreelancerChangePasswordDto,
49
50
  FreelancerCreateAccountDto: () => FreelancerCreateAccountDto,
@@ -83,6 +84,7 @@ __export(index_exports, {
83
84
  Otp: () => Otp,
84
85
  PLAN_PATTERN: () => PLAN_PATTERN,
85
86
  PROFILE_PATTERN: () => PROFILE_PATTERN,
87
+ Plan: () => Plan,
86
88
  Provider: () => Provider,
87
89
  QUESTION_PATTERN: () => QUESTION_PATTERN,
88
90
  Question: () => Question,
@@ -92,9 +94,13 @@ __export(index_exports, {
92
94
  RefreshToken: () => RefreshToken,
93
95
  ResumeParserLog: () => ResumeParserLog,
94
96
  SUBADMIN_PATTERN: () => SUBADMIN_PATTERN,
97
+ SYSTEM_PREFERENCES_PATTERN: () => SYSTEM_PREFERENCES_PATTERN,
95
98
  ScopeEnum: () => ScopeEnum,
96
99
  Skill: () => Skill,
97
100
  Step: () => Step,
101
+ SystemPreference: () => SystemPreference,
102
+ SystemPreferenceDto: () => SystemPreferenceDto,
103
+ SystemPreferenceKey: () => SystemPreferenceKey,
98
104
  TypeOfEmploymentEnum: () => TypeOfEmploymentEnum,
99
105
  UpdateCompanyProfileDto: () => UpdateCompanyProfileDto,
100
106
  UpdateSubAdminAccountStatusDto: () => UpdateSubAdminAccountStatusDto,
@@ -235,7 +241,9 @@ __decorateClass([
235
241
  ], FreelancerCreateAccountDto.prototype, "mobileCode", 2);
236
242
  __decorateClass([
237
243
  (0, import_class_validator5.IsNotEmpty)({ message: "Please enter mobile number." }),
238
- (0, import_class_validator5.Matches)(/^\d{10}$/, { message: "Mobile must be a 10-digit number" })
244
+ (0, import_class_validator5.Matches)(/^(\+1\s?)?(\(?\d{3}\)?[\s.-]?)?\d{3}[\s.-]?\d{4}$/, {
245
+ message: "Please enter a valid US mobile number"
246
+ })
239
247
  ], FreelancerCreateAccountDto.prototype, "mobile", 2);
240
248
  __decorateClass([
241
249
  (0, import_class_validator5.IsNotEmpty)({ message: "Please enter password." }),
@@ -478,7 +486,7 @@ var CLIENT_PROFILE_PATTERN = {
478
486
  var import_class_validator15 = require("class-validator");
479
487
 
480
488
  // src/entities/company-profile.entity.ts
481
- var import_typeorm11 = require("typeorm");
489
+ var import_typeorm12 = require("typeorm");
482
490
 
483
491
  // src/entities/base.entity.ts
484
492
  var import_typeorm = require("typeorm");
@@ -518,7 +526,7 @@ __decorateClass([
518
526
  ], BaseEntity.prototype, "deletedAt", 2);
519
527
 
520
528
  // src/entities/user.entity.ts
521
- var import_typeorm10 = require("typeorm");
529
+ var import_typeorm11 = require("typeorm");
522
530
 
523
531
  // src/entities/refresh-token.entity.ts
524
532
  var import_typeorm2 = require("typeorm");
@@ -980,6 +988,29 @@ BankDetail = __decorateClass([
980
988
  (0, import_typeorm9.Entity)("bank_details")
981
989
  ], BankDetail);
982
990
 
991
+ // src/entities/system-preference.entity.ts
992
+ var import_typeorm10 = require("typeorm");
993
+ var SystemPreference = class extends BaseEntity {
994
+ };
995
+ // individual index to find system preference by user
996
+ __decorateClass([
997
+ (0, import_typeorm10.Column)({ name: "user_id", type: "integer", nullable: true }),
998
+ (0, import_typeorm10.Index)()
999
+ ], SystemPreference.prototype, "userId", 2);
1000
+ __decorateClass([
1001
+ (0, import_typeorm10.ManyToOne)(() => User, (user) => user.systemPreference),
1002
+ (0, import_typeorm10.JoinColumn)({ name: "user_id" })
1003
+ ], SystemPreference.prototype, "user", 2);
1004
+ __decorateClass([
1005
+ (0, import_typeorm10.Column)({ name: "key", type: "varchar", unique: true, nullable: false })
1006
+ ], SystemPreference.prototype, "key", 2);
1007
+ __decorateClass([
1008
+ (0, import_typeorm10.Column)({ name: "value", type: "boolean", default: false })
1009
+ ], SystemPreference.prototype, "value", 2);
1010
+ SystemPreference = __decorateClass([
1011
+ (0, import_typeorm10.Entity)("system_preferences")
1012
+ ], SystemPreference);
1013
+
983
1014
  // src/entities/user.entity.ts
984
1015
  var AccountType = /* @__PURE__ */ ((AccountType2) => {
985
1016
  AccountType2["ADMIN"] = "ADMIN";
@@ -1004,40 +1035,40 @@ var Provider = /* @__PURE__ */ ((Provider2) => {
1004
1035
  var User = class extends BaseEntity {
1005
1036
  };
1006
1037
  __decorateClass([
1007
- (0, import_typeorm10.Column)({ name: "unique_id", type: "varchar", unique: true })
1038
+ (0, import_typeorm11.Column)({ name: "unique_id", type: "varchar", unique: true })
1008
1039
  ], User.prototype, "uniqueId", 2);
1009
1040
  __decorateClass([
1010
- (0, import_typeorm10.Column)({ name: "username", type: "varchar", unique: true, nullable: true })
1041
+ (0, import_typeorm11.Column)({ name: "username", type: "varchar", unique: true, nullable: true })
1011
1042
  ], User.prototype, "username", 2);
1012
1043
  __decorateClass([
1013
- (0, import_typeorm10.Column)({ name: "first_name", type: "varchar", length: 100, nullable: true })
1044
+ (0, import_typeorm11.Column)({ name: "first_name", type: "varchar", length: 100, nullable: true })
1014
1045
  ], User.prototype, "firstName", 2);
1015
1046
  __decorateClass([
1016
- (0, import_typeorm10.Column)({ name: "last_name", type: "varchar", length: 100, nullable: true })
1047
+ (0, import_typeorm11.Column)({ name: "last_name", type: "varchar", length: 100, nullable: true })
1017
1048
  ], User.prototype, "lastName", 2);
1018
1049
  __decorateClass([
1019
- (0, import_typeorm10.Column)({ name: "date_of_birth", type: "date", nullable: true })
1050
+ (0, import_typeorm11.Column)({ name: "date_of_birth", type: "date", nullable: true })
1020
1051
  ], User.prototype, "dateOfBirth", 2);
1021
1052
  __decorateClass([
1022
- (0, import_typeorm10.Column)({ name: "gender", type: "varchar", length: 10, nullable: true })
1053
+ (0, import_typeorm11.Column)({ name: "gender", type: "varchar", length: 10, nullable: true })
1023
1054
  ], User.prototype, "gender", 2);
1024
1055
  __decorateClass([
1025
- (0, import_typeorm10.Column)({ name: "profile_picture_url", type: "text", nullable: true })
1056
+ (0, import_typeorm11.Column)({ name: "profile_picture_url", type: "text", nullable: true })
1026
1057
  ], User.prototype, "profilePictureUrl", 2);
1027
1058
  __decorateClass([
1028
- (0, import_typeorm10.Column)({ name: "email", type: "varchar", unique: true })
1059
+ (0, import_typeorm11.Column)({ name: "email", type: "varchar", unique: true })
1029
1060
  ], User.prototype, "email", 2);
1030
1061
  __decorateClass([
1031
- (0, import_typeorm10.Column)({ name: "mobile_code", type: "varchar", nullable: true })
1062
+ (0, import_typeorm11.Column)({ name: "mobile_code", type: "varchar", nullable: true })
1032
1063
  ], User.prototype, "mobileCode", 2);
1033
1064
  __decorateClass([
1034
- (0, import_typeorm10.Column)({ name: "mobile", type: "varchar", unique: true, nullable: true })
1065
+ (0, import_typeorm11.Column)({ name: "mobile", type: "varchar", unique: true, nullable: true })
1035
1066
  ], User.prototype, "mobile", 2);
1036
1067
  __decorateClass([
1037
- (0, import_typeorm10.Column)({ name: "password", type: "varchar" })
1068
+ (0, import_typeorm11.Column)({ name: "password", type: "varchar" })
1038
1069
  ], User.prototype, "password", 2);
1039
1070
  __decorateClass([
1040
- (0, import_typeorm10.Column)({
1071
+ (0, import_typeorm11.Column)({
1041
1072
  name: "account_type",
1042
1073
  type: "enum",
1043
1074
  enum: AccountType,
@@ -1045,7 +1076,7 @@ __decorateClass([
1045
1076
  })
1046
1077
  ], User.prototype, "accountType", 2);
1047
1078
  __decorateClass([
1048
- (0, import_typeorm10.Column)({
1079
+ (0, import_typeorm11.Column)({
1049
1080
  name: "account_status",
1050
1081
  type: "enum",
1051
1082
  enum: AccountStatus,
@@ -1053,32 +1084,32 @@ __decorateClass([
1053
1084
  })
1054
1085
  ], User.prototype, "accountStatus", 2);
1055
1086
  __decorateClass([
1056
- (0, import_typeorm10.Column)({ name: "is_email_verified", type: "boolean", default: false })
1087
+ (0, import_typeorm11.Column)({ name: "is_email_verified", type: "boolean", default: false })
1057
1088
  ], User.prototype, "isEmailVerified", 2);
1058
1089
  __decorateClass([
1059
- (0, import_typeorm10.Column)({ name: "is_mobile_verified", type: "boolean", default: false })
1090
+ (0, import_typeorm11.Column)({ name: "is_mobile_verified", type: "boolean", default: false })
1060
1091
  ], User.prototype, "isMobileVerified", 2);
1061
1092
  __decorateClass([
1062
- (0, import_typeorm10.Column)({
1093
+ (0, import_typeorm11.Column)({
1063
1094
  name: "last_login_at",
1064
1095
  type: "timestamp with time zone",
1065
1096
  nullable: true
1066
1097
  })
1067
1098
  ], User.prototype, "lastLoginAt", 2);
1068
1099
  __decorateClass([
1069
- (0, import_typeorm10.Column)({ name: "last_login_ip", type: "varchar", nullable: true })
1100
+ (0, import_typeorm11.Column)({ name: "last_login_ip", type: "varchar", nullable: true })
1070
1101
  ], User.prototype, "lastLoginIp", 2);
1071
1102
  __decorateClass([
1072
- (0, import_typeorm10.Column)({ name: "reset_token", type: "varchar", nullable: true })
1103
+ (0, import_typeorm11.Column)({ name: "reset_token", type: "varchar", nullable: true })
1073
1104
  ], User.prototype, "resetToken", 2);
1074
1105
  __decorateClass([
1075
- (0, import_typeorm10.Column)({ name: "reset_token_expire_at", type: "timestamp with time zone", nullable: true })
1106
+ (0, import_typeorm11.Column)({ name: "reset_token_expire_at", type: "timestamp with time zone", nullable: true })
1076
1107
  ], User.prototype, "resetTokenExpireAt", 2);
1077
1108
  __decorateClass([
1078
- (0, import_typeorm10.OneToMany)(() => RefreshToken, (token) => token.user)
1109
+ (0, import_typeorm11.OneToMany)(() => RefreshToken, (token) => token.user)
1079
1110
  ], User.prototype, "refreshTokens", 2);
1080
1111
  __decorateClass([
1081
- (0, import_typeorm10.Column)({
1112
+ (0, import_typeorm11.Column)({
1082
1113
  name: "provider",
1083
1114
  type: "enum",
1084
1115
  enum: Provider,
@@ -1087,40 +1118,43 @@ __decorateClass([
1087
1118
  })
1088
1119
  ], User.prototype, "provider", 2);
1089
1120
  __decorateClass([
1090
- (0, import_typeorm10.Column)({ name: "provider_token", type: "varchar", nullable: true })
1121
+ (0, import_typeorm11.Column)({ name: "provider_token", type: "varchar", nullable: true })
1091
1122
  ], User.prototype, "providerToken", 2);
1092
1123
  __decorateClass([
1093
- (0, import_typeorm10.Column)({ name: "linkedin_id", type: "varchar", nullable: true })
1124
+ (0, import_typeorm11.Column)({ name: "linkedin_id", type: "varchar", nullable: true })
1094
1125
  ], User.prototype, "linkedInId", 2);
1095
1126
  __decorateClass([
1096
- (0, import_typeorm10.Column)({ name: "google_id", type: "varchar", nullable: true })
1127
+ (0, import_typeorm11.Column)({ name: "google_id", type: "varchar", nullable: true })
1097
1128
  ], User.prototype, "googleId", 2);
1098
1129
  __decorateClass([
1099
- (0, import_typeorm10.Column)({ name: "gitlabs_id", type: "varchar", nullable: true })
1130
+ (0, import_typeorm11.Column)({ name: "gitlabs_id", type: "varchar", nullable: true })
1100
1131
  ], User.prototype, "gitLabsId", 2);
1101
1132
  __decorateClass([
1102
- (0, import_typeorm10.OneToMany)(() => Otp, (otp) => otp.user)
1133
+ (0, import_typeorm11.OneToMany)(() => Otp, (otp) => otp.user)
1103
1134
  ], User.prototype, "otps", 2);
1104
1135
  __decorateClass([
1105
- (0, import_typeorm10.OneToMany)(() => ResumeParserLog, (resumeParser) => resumeParser.user)
1136
+ (0, import_typeorm11.OneToMany)(() => ResumeParserLog, (resumeParser) => resumeParser.user)
1106
1137
  ], User.prototype, "resumeParserLogs", 2);
1107
1138
  __decorateClass([
1108
- (0, import_typeorm10.OneToOne)(
1139
+ (0, import_typeorm11.OneToOne)(
1109
1140
  () => FreelancerProfile,
1110
1141
  (freelancerProfile) => freelancerProfile.user
1111
1142
  )
1112
1143
  ], User.prototype, "freelancerProfile", 2);
1113
1144
  __decorateClass([
1114
- (0, import_typeorm10.OneToOne)(() => CompanyProfile, (companyProfile) => companyProfile.user)
1145
+ (0, import_typeorm11.OneToOne)(() => CompanyProfile, (companyProfile) => companyProfile.user)
1115
1146
  ], User.prototype, "companyProfile", 2);
1116
1147
  __decorateClass([
1117
- (0, import_typeorm10.OneToMany)(() => Job, (job) => job.user)
1148
+ (0, import_typeorm11.OneToMany)(() => Job, (job) => job.user)
1118
1149
  ], User.prototype, "jobs", 2);
1119
1150
  __decorateClass([
1120
- (0, import_typeorm10.OneToMany)(() => BankDetail, (bankDetail) => bankDetail.user)
1151
+ (0, import_typeorm11.OneToMany)(() => BankDetail, (bankDetail) => bankDetail.user)
1121
1152
  ], User.prototype, "bankDetail", 2);
1153
+ __decorateClass([
1154
+ (0, import_typeorm11.OneToMany)(() => SystemPreference, (systemPreference) => systemPreference.user)
1155
+ ], User.prototype, "systemPreference", 2);
1122
1156
  User = __decorateClass([
1123
- (0, import_typeorm10.Entity)("users")
1157
+ (0, import_typeorm11.Entity)("users")
1124
1158
  ], User);
1125
1159
 
1126
1160
  // src/entities/company-profile.entity.ts
@@ -1147,42 +1181,42 @@ var CompanyProfile = class extends BaseEntity {
1147
1181
  };
1148
1182
  // individual index to find company profile by user
1149
1183
  __decorateClass([
1150
- (0, import_typeorm11.Column)({ name: "user_id", type: "integer", nullable: true }),
1151
- (0, import_typeorm11.Index)()
1184
+ (0, import_typeorm12.Column)({ name: "user_id", type: "integer", nullable: true }),
1185
+ (0, import_typeorm12.Index)()
1152
1186
  ], CompanyProfile.prototype, "userId", 2);
1153
1187
  __decorateClass([
1154
- (0, import_typeorm11.ManyToOne)(() => User, (user) => user.otps),
1155
- (0, import_typeorm11.JoinColumn)({ name: "user_id" })
1188
+ (0, import_typeorm12.ManyToOne)(() => User, (user) => user.otps),
1189
+ (0, import_typeorm12.JoinColumn)({ name: "user_id" })
1156
1190
  ], CompanyProfile.prototype, "user", 2);
1157
1191
  __decorateClass([
1158
- (0, import_typeorm11.Column)({ name: "company_name", type: "varchar", nullable: true })
1192
+ (0, import_typeorm12.Column)({ name: "company_name", type: "varchar", nullable: true })
1159
1193
  ], CompanyProfile.prototype, "companyName", 2);
1160
1194
  __decorateClass([
1161
- (0, import_typeorm11.Column)({ name: "bio", type: "varchar", nullable: true })
1195
+ (0, import_typeorm12.Column)({ name: "bio", type: "varchar", nullable: true })
1162
1196
  ], CompanyProfile.prototype, "bio", 2);
1163
1197
  __decorateClass([
1164
- (0, import_typeorm11.Column)({ name: "website", type: "varchar", nullable: true })
1198
+ (0, import_typeorm12.Column)({ name: "website", type: "varchar", nullable: true })
1165
1199
  ], CompanyProfile.prototype, "webSite", 2);
1166
1200
  __decorateClass([
1167
- (0, import_typeorm11.Column)({ name: "about_company", type: "varchar", nullable: true })
1201
+ (0, import_typeorm12.Column)({ name: "about_company", type: "varchar", nullable: true })
1168
1202
  ], CompanyProfile.prototype, "aboutCompany", 2);
1169
1203
  __decorateClass([
1170
- (0, import_typeorm11.Column)({ name: "is_service_aggrement_signed", type: "boolean", default: false })
1204
+ (0, import_typeorm12.Column)({ name: "is_service_aggrement_signed", type: "boolean", default: false })
1171
1205
  ], CompanyProfile.prototype, "isServiceAgreementSigned", 2);
1172
1206
  __decorateClass([
1173
- (0, import_typeorm11.Column)({ name: "company_address", type: "varchar", nullable: true })
1207
+ (0, import_typeorm12.Column)({ name: "company_address", type: "varchar", nullable: true })
1174
1208
  ], CompanyProfile.prototype, "companyAddress", 2);
1175
1209
  __decorateClass([
1176
- (0, import_typeorm11.Column)({ name: "phone_number", type: "varchar", nullable: true })
1210
+ (0, import_typeorm12.Column)({ name: "phone_number", type: "varchar", nullable: true })
1177
1211
  ], CompanyProfile.prototype, "phoneNumber", 2);
1178
1212
  __decorateClass([
1179
- (0, import_typeorm11.Column)({ name: "skills", type: "text", nullable: true })
1213
+ (0, import_typeorm12.Column)({ name: "skills", type: "text", nullable: true })
1180
1214
  ], CompanyProfile.prototype, "skills", 2);
1181
1215
  __decorateClass([
1182
- (0, import_typeorm11.Column)({ name: "required_freelancer", type: "varchar", nullable: true })
1216
+ (0, import_typeorm12.Column)({ name: "required_freelancer", type: "varchar", nullable: true })
1183
1217
  ], CompanyProfile.prototype, "requiredFreelancer", 2);
1184
1218
  __decorateClass([
1185
- (0, import_typeorm11.Column)({
1219
+ (0, import_typeorm12.Column)({
1186
1220
  name: "kind_of_hiring",
1187
1221
  type: "enum",
1188
1222
  enum: KindOfHire,
@@ -1190,7 +1224,7 @@ __decorateClass([
1190
1224
  })
1191
1225
  ], CompanyProfile.prototype, "kindOfHiring", 2);
1192
1226
  __decorateClass([
1193
- (0, import_typeorm11.Column)({
1227
+ (0, import_typeorm12.Column)({
1194
1228
  name: "mode_of_hire",
1195
1229
  type: "enum",
1196
1230
  enum: ModeOfHire,
@@ -1198,7 +1232,7 @@ __decorateClass([
1198
1232
  })
1199
1233
  ], CompanyProfile.prototype, "modeOfHire", 2);
1200
1234
  __decorateClass([
1201
- (0, import_typeorm11.Column)({
1235
+ (0, import_typeorm12.Column)({
1202
1236
  name: "found_us_on",
1203
1237
  type: "enum",
1204
1238
  enum: FromUsOn,
@@ -1206,7 +1240,7 @@ __decorateClass([
1206
1240
  })
1207
1241
  ], CompanyProfile.prototype, "foundUsOn", 2);
1208
1242
  CompanyProfile = __decorateClass([
1209
- (0, import_typeorm11.Entity)("company_profiles")
1243
+ (0, import_typeorm12.Entity)("company_profiles")
1210
1244
  ], CompanyProfile);
1211
1245
 
1212
1246
  // src/modules/user/client-profile/dto/update-client-profile.dto.ts
@@ -1541,6 +1575,32 @@ var PLAN_PATTERN = {
1541
1575
  fetchPlans: "fetch.plans"
1542
1576
  };
1543
1577
 
1578
+ // src/modules/systempreference/pattern/pattern.ts
1579
+ var SYSTEM_PREFERENCES_PATTERN = {
1580
+ fetchSystemPreferences: "fetch.system.preferences",
1581
+ updateSystemPreferences: "update.system.preferences"
1582
+ };
1583
+
1584
+ // src/modules/systempreference/dto/system-preference.dto.ts
1585
+ var import_class_validator25 = require("class-validator");
1586
+ var SystemPreferenceKey = /* @__PURE__ */ ((SystemPreferenceKey2) => {
1587
+ SystemPreferenceKey2["EMAIL_NOTIFICATION"] = "EMAIL_NOTIFICATION";
1588
+ SystemPreferenceKey2["DARK_MODE"] = "DARK_MODE";
1589
+ return SystemPreferenceKey2;
1590
+ })(SystemPreferenceKey || {});
1591
+ var SystemPreferenceDto = class {
1592
+ };
1593
+ __decorateClass([
1594
+ (0, import_class_validator25.IsBoolean)()
1595
+ ], SystemPreferenceDto.prototype, "value", 2);
1596
+ __decorateClass([
1597
+ (0, import_class_validator25.IsEnum)(SystemPreferenceKey, {
1598
+ message: `key must be one of: ${Object.values(
1599
+ SystemPreferenceKey
1600
+ ).join(", ")}`
1601
+ })
1602
+ ], SystemPreferenceDto.prototype, "key", 2);
1603
+
1544
1604
  // src/adapters/tcp/user.tcp.adapter.ts
1545
1605
  var import_dotenv = require("dotenv");
1546
1606
  var import_microservices = require("@nestjs/microservices");
@@ -1758,7 +1818,7 @@ var NotificationRMQAdapter = (mode = "microservice") => {
1758
1818
  };
1759
1819
 
1760
1820
  // src/entities/question.entity.ts
1761
- var import_typeorm12 = require("typeorm");
1821
+ var import_typeorm13 = require("typeorm");
1762
1822
  var QuestionFor = /* @__PURE__ */ ((QuestionFor2) => {
1763
1823
  QuestionFor2["CLIENT"] = "CLIENT";
1764
1824
  QuestionFor2["FREELANCER"] = "FREELANCER";
@@ -1767,16 +1827,16 @@ var QuestionFor = /* @__PURE__ */ ((QuestionFor2) => {
1767
1827
  var Question = class extends BaseEntity {
1768
1828
  };
1769
1829
  __decorateClass([
1770
- (0, import_typeorm12.Column)({ name: "question", type: "varchar" })
1830
+ (0, import_typeorm13.Column)({ name: "question", type: "varchar" })
1771
1831
  ], Question.prototype, "question", 2);
1772
1832
  __decorateClass([
1773
- (0, import_typeorm12.Column)({ name: "hint", type: "varchar", nullable: true })
1833
+ (0, import_typeorm13.Column)({ name: "hint", type: "varchar", nullable: true })
1774
1834
  ], Question.prototype, "hint", 2);
1775
1835
  __decorateClass([
1776
- (0, import_typeorm12.Column)({ name: "slug", type: "varchar", nullable: true, unique: true })
1836
+ (0, import_typeorm13.Column)({ name: "slug", type: "varchar", nullable: true, unique: true })
1777
1837
  ], Question.prototype, "slug", 2);
1778
1838
  __decorateClass([
1779
- (0, import_typeorm12.Column)({
1839
+ (0, import_typeorm13.Column)({
1780
1840
  name: "question_for",
1781
1841
  type: "enum",
1782
1842
  enum: QuestionFor,
@@ -1784,34 +1844,77 @@ __decorateClass([
1784
1844
  })
1785
1845
  ], Question.prototype, "questionFor", 2);
1786
1846
  __decorateClass([
1787
- (0, import_typeorm12.Column)({ name: "type", type: "varchar", nullable: true })
1847
+ (0, import_typeorm13.Column)({ name: "type", type: "varchar", nullable: true })
1788
1848
  ], Question.prototype, "type", 2);
1789
1849
  __decorateClass([
1790
- (0, import_typeorm12.Column)({ name: "options", type: "jsonb", nullable: true })
1850
+ (0, import_typeorm13.Column)({ name: "options", type: "jsonb", nullable: true })
1791
1851
  ], Question.prototype, "options", 2);
1792
1852
  __decorateClass([
1793
- (0, import_typeorm12.Column)({ name: "is_active", type: "boolean", default: false })
1853
+ (0, import_typeorm13.Column)({ name: "is_active", type: "boolean", default: false })
1794
1854
  ], Question.prototype, "isActive", 2);
1795
1855
  Question = __decorateClass([
1796
- (0, import_typeorm12.Entity)("questions")
1856
+ (0, import_typeorm13.Entity)("questions")
1797
1857
  ], Question);
1798
1858
 
1799
1859
  // src/entities/job-role.entity.ts
1800
- var import_typeorm13 = require("typeorm");
1860
+ var import_typeorm14 = require("typeorm");
1801
1861
  var JobRoles = class extends BaseEntity {
1802
1862
  };
1803
1863
  __decorateClass([
1804
- (0, import_typeorm13.Column)({ name: "slug", type: "varchar", nullable: true, unique: true })
1864
+ (0, import_typeorm14.Column)({ name: "slug", type: "varchar", nullable: true, unique: true })
1805
1865
  ], JobRoles.prototype, "slug", 2);
1806
1866
  __decorateClass([
1807
- (0, import_typeorm13.Column)({ name: "name", type: "varchar", nullable: true })
1867
+ (0, import_typeorm14.Column)({ name: "name", type: "varchar", nullable: true })
1808
1868
  ], JobRoles.prototype, "name", 2);
1809
1869
  __decorateClass([
1810
- (0, import_typeorm13.Column)({ name: "is_active", type: "boolean", default: true })
1870
+ (0, import_typeorm14.Column)({ name: "is_active", type: "boolean", default: true })
1811
1871
  ], JobRoles.prototype, "isActive", 2);
1812
1872
  JobRoles = __decorateClass([
1813
- (0, import_typeorm13.Entity)("job_roles")
1873
+ (0, import_typeorm14.Entity)("job_roles")
1814
1874
  ], JobRoles);
1875
+
1876
+ // src/entities/plan.entity.ts
1877
+ var import_typeorm16 = require("typeorm");
1878
+
1879
+ // src/entities/feature.entity.ts
1880
+ var import_typeorm15 = require("typeorm");
1881
+ var Feature = class extends BaseEntity {
1882
+ };
1883
+ __decorateClass([
1884
+ (0, import_typeorm15.Column)({ name: "name", type: "varchar", unique: true })
1885
+ ], Feature.prototype, "name", 2);
1886
+ __decorateClass([
1887
+ (0, import_typeorm15.ManyToMany)(() => Plan, (plan) => plan.features)
1888
+ ], Feature.prototype, "plans", 2);
1889
+ Feature = __decorateClass([
1890
+ (0, import_typeorm15.Entity)("features")
1891
+ ], Feature);
1892
+
1893
+ // src/entities/plan.entity.ts
1894
+ var Plan = class extends BaseEntity {
1895
+ };
1896
+ __decorateClass([
1897
+ (0, import_typeorm16.Column)({ name: "name", type: "varchar", unique: true })
1898
+ ], Plan.prototype, "name", 2);
1899
+ __decorateClass([
1900
+ (0, import_typeorm16.Column)({ name: "description", type: "varchar", nullable: true })
1901
+ ], Plan.prototype, "description", 2);
1902
+ __decorateClass([
1903
+ (0, import_typeorm16.Column)({ name: "price", type: "decimal", precision: 10, scale: 2 })
1904
+ ], Plan.prototype, "price", 2);
1905
+ __decorateClass([
1906
+ (0, import_typeorm16.Column)({ name: "billing_period", type: "varchar" })
1907
+ ], Plan.prototype, "billingPeriod", 2);
1908
+ __decorateClass([
1909
+ (0, import_typeorm16.Column)({ name: "is_current", type: "boolean", default: false })
1910
+ ], Plan.prototype, "isCurrent", 2);
1911
+ __decorateClass([
1912
+ (0, import_typeorm16.ManyToMany)(() => Feature, (feature) => feature.plans, { cascade: true }),
1913
+ (0, import_typeorm16.JoinTable)()
1914
+ ], Plan.prototype, "features", 2);
1915
+ Plan = __decorateClass([
1916
+ (0, import_typeorm16.Entity)("plans")
1917
+ ], Plan);
1815
1918
  // Annotate the CommonJS export names for ESM import in node:
1816
1919
  0 && (module.exports = {
1817
1920
  AUTHENTICATION_PATTERN,
@@ -1831,6 +1934,7 @@ JobRoles = __decorateClass([
1831
1934
  CreateQuestionDto,
1832
1935
  CreateSubAdminDto,
1833
1936
  EmploymentType,
1937
+ Feature,
1834
1938
  FreelancerBankDetailsDto,
1835
1939
  FreelancerChangePasswordDto,
1836
1940
  FreelancerCreateAccountDto,
@@ -1870,6 +1974,7 @@ JobRoles = __decorateClass([
1870
1974
  Otp,
1871
1975
  PLAN_PATTERN,
1872
1976
  PROFILE_PATTERN,
1977
+ Plan,
1873
1978
  Provider,
1874
1979
  QUESTION_PATTERN,
1875
1980
  Question,
@@ -1879,9 +1984,13 @@ JobRoles = __decorateClass([
1879
1984
  RefreshToken,
1880
1985
  ResumeParserLog,
1881
1986
  SUBADMIN_PATTERN,
1987
+ SYSTEM_PREFERENCES_PATTERN,
1882
1988
  ScopeEnum,
1883
1989
  Skill,
1884
1990
  Step,
1991
+ SystemPreference,
1992
+ SystemPreferenceDto,
1993
+ SystemPreferenceKey,
1885
1994
  TypeOfEmploymentEnum,
1886
1995
  UpdateCompanyProfileDto,
1887
1996
  UpdateSubAdminAccountStatusDto,
package/dist/index.mjs CHANGED
@@ -153,7 +153,9 @@ __decorateClass([
153
153
  ], FreelancerCreateAccountDto.prototype, "mobileCode", 2);
154
154
  __decorateClass([
155
155
  IsNotEmpty4({ message: "Please enter mobile number." }),
156
- Matches(/^\d{10}$/, { message: "Mobile must be a 10-digit number" })
156
+ Matches(/^(\+1\s?)?(\(?\d{3}\)?[\s.-]?)?\d{3}[\s.-]?\d{4}$/, {
157
+ message: "Please enter a valid US mobile number"
158
+ })
157
159
  ], FreelancerCreateAccountDto.prototype, "mobile", 2);
158
160
  __decorateClass([
159
161
  IsNotEmpty4({ message: "Please enter password." }),
@@ -428,11 +430,11 @@ import {
428
430
 
429
431
  // src/entities/company-profile.entity.ts
430
432
  import {
431
- Entity as Entity10,
432
- Column as Column11,
433
- ManyToOne as ManyToOne8,
434
- JoinColumn as JoinColumn8,
435
- Index as Index6
433
+ Entity as Entity11,
434
+ Column as Column12,
435
+ ManyToOne as ManyToOne9,
436
+ JoinColumn as JoinColumn9,
437
+ Index as Index7
436
438
  } from "typeorm";
437
439
 
438
440
  // src/entities/base.entity.ts
@@ -480,7 +482,7 @@ __decorateClass([
480
482
  ], BaseEntity.prototype, "deletedAt", 2);
481
483
 
482
484
  // src/entities/user.entity.ts
483
- import { Entity as Entity9, Column as Column10, OneToMany as OneToMany5, OneToOne } from "typeorm";
485
+ import { Entity as Entity10, Column as Column11, OneToMany as OneToMany5, OneToOne } from "typeorm";
484
486
 
485
487
  // src/entities/refresh-token.entity.ts
486
488
  import {
@@ -984,6 +986,35 @@ BankDetail = __decorateClass([
984
986
  Entity8("bank_details")
985
987
  ], BankDetail);
986
988
 
989
+ // src/entities/system-preference.entity.ts
990
+ import {
991
+ Entity as Entity9,
992
+ Column as Column10,
993
+ Index as Index6,
994
+ ManyToOne as ManyToOne8,
995
+ JoinColumn as JoinColumn8
996
+ } from "typeorm";
997
+ var SystemPreference = class extends BaseEntity {
998
+ };
999
+ // individual index to find system preference by user
1000
+ __decorateClass([
1001
+ Column10({ name: "user_id", type: "integer", nullable: true }),
1002
+ Index6()
1003
+ ], SystemPreference.prototype, "userId", 2);
1004
+ __decorateClass([
1005
+ ManyToOne8(() => User, (user) => user.systemPreference),
1006
+ JoinColumn8({ name: "user_id" })
1007
+ ], SystemPreference.prototype, "user", 2);
1008
+ __decorateClass([
1009
+ Column10({ name: "key", type: "varchar", unique: true, nullable: false })
1010
+ ], SystemPreference.prototype, "key", 2);
1011
+ __decorateClass([
1012
+ Column10({ name: "value", type: "boolean", default: false })
1013
+ ], SystemPreference.prototype, "value", 2);
1014
+ SystemPreference = __decorateClass([
1015
+ Entity9("system_preferences")
1016
+ ], SystemPreference);
1017
+
987
1018
  // src/entities/user.entity.ts
988
1019
  var AccountType = /* @__PURE__ */ ((AccountType2) => {
989
1020
  AccountType2["ADMIN"] = "ADMIN";
@@ -1008,40 +1039,40 @@ var Provider = /* @__PURE__ */ ((Provider2) => {
1008
1039
  var User = class extends BaseEntity {
1009
1040
  };
1010
1041
  __decorateClass([
1011
- Column10({ name: "unique_id", type: "varchar", unique: true })
1042
+ Column11({ name: "unique_id", type: "varchar", unique: true })
1012
1043
  ], User.prototype, "uniqueId", 2);
1013
1044
  __decorateClass([
1014
- Column10({ name: "username", type: "varchar", unique: true, nullable: true })
1045
+ Column11({ name: "username", type: "varchar", unique: true, nullable: true })
1015
1046
  ], User.prototype, "username", 2);
1016
1047
  __decorateClass([
1017
- Column10({ name: "first_name", type: "varchar", length: 100, nullable: true })
1048
+ Column11({ name: "first_name", type: "varchar", length: 100, nullable: true })
1018
1049
  ], User.prototype, "firstName", 2);
1019
1050
  __decorateClass([
1020
- Column10({ name: "last_name", type: "varchar", length: 100, nullable: true })
1051
+ Column11({ name: "last_name", type: "varchar", length: 100, nullable: true })
1021
1052
  ], User.prototype, "lastName", 2);
1022
1053
  __decorateClass([
1023
- Column10({ name: "date_of_birth", type: "date", nullable: true })
1054
+ Column11({ name: "date_of_birth", type: "date", nullable: true })
1024
1055
  ], User.prototype, "dateOfBirth", 2);
1025
1056
  __decorateClass([
1026
- Column10({ name: "gender", type: "varchar", length: 10, nullable: true })
1057
+ Column11({ name: "gender", type: "varchar", length: 10, nullable: true })
1027
1058
  ], User.prototype, "gender", 2);
1028
1059
  __decorateClass([
1029
- Column10({ name: "profile_picture_url", type: "text", nullable: true })
1060
+ Column11({ name: "profile_picture_url", type: "text", nullable: true })
1030
1061
  ], User.prototype, "profilePictureUrl", 2);
1031
1062
  __decorateClass([
1032
- Column10({ name: "email", type: "varchar", unique: true })
1063
+ Column11({ name: "email", type: "varchar", unique: true })
1033
1064
  ], User.prototype, "email", 2);
1034
1065
  __decorateClass([
1035
- Column10({ name: "mobile_code", type: "varchar", nullable: true })
1066
+ Column11({ name: "mobile_code", type: "varchar", nullable: true })
1036
1067
  ], User.prototype, "mobileCode", 2);
1037
1068
  __decorateClass([
1038
- Column10({ name: "mobile", type: "varchar", unique: true, nullable: true })
1069
+ Column11({ name: "mobile", type: "varchar", unique: true, nullable: true })
1039
1070
  ], User.prototype, "mobile", 2);
1040
1071
  __decorateClass([
1041
- Column10({ name: "password", type: "varchar" })
1072
+ Column11({ name: "password", type: "varchar" })
1042
1073
  ], User.prototype, "password", 2);
1043
1074
  __decorateClass([
1044
- Column10({
1075
+ Column11({
1045
1076
  name: "account_type",
1046
1077
  type: "enum",
1047
1078
  enum: AccountType,
@@ -1049,7 +1080,7 @@ __decorateClass([
1049
1080
  })
1050
1081
  ], User.prototype, "accountType", 2);
1051
1082
  __decorateClass([
1052
- Column10({
1083
+ Column11({
1053
1084
  name: "account_status",
1054
1085
  type: "enum",
1055
1086
  enum: AccountStatus,
@@ -1057,32 +1088,32 @@ __decorateClass([
1057
1088
  })
1058
1089
  ], User.prototype, "accountStatus", 2);
1059
1090
  __decorateClass([
1060
- Column10({ name: "is_email_verified", type: "boolean", default: false })
1091
+ Column11({ name: "is_email_verified", type: "boolean", default: false })
1061
1092
  ], User.prototype, "isEmailVerified", 2);
1062
1093
  __decorateClass([
1063
- Column10({ name: "is_mobile_verified", type: "boolean", default: false })
1094
+ Column11({ name: "is_mobile_verified", type: "boolean", default: false })
1064
1095
  ], User.prototype, "isMobileVerified", 2);
1065
1096
  __decorateClass([
1066
- Column10({
1097
+ Column11({
1067
1098
  name: "last_login_at",
1068
1099
  type: "timestamp with time zone",
1069
1100
  nullable: true
1070
1101
  })
1071
1102
  ], User.prototype, "lastLoginAt", 2);
1072
1103
  __decorateClass([
1073
- Column10({ name: "last_login_ip", type: "varchar", nullable: true })
1104
+ Column11({ name: "last_login_ip", type: "varchar", nullable: true })
1074
1105
  ], User.prototype, "lastLoginIp", 2);
1075
1106
  __decorateClass([
1076
- Column10({ name: "reset_token", type: "varchar", nullable: true })
1107
+ Column11({ name: "reset_token", type: "varchar", nullable: true })
1077
1108
  ], User.prototype, "resetToken", 2);
1078
1109
  __decorateClass([
1079
- Column10({ name: "reset_token_expire_at", type: "timestamp with time zone", nullable: true })
1110
+ Column11({ name: "reset_token_expire_at", type: "timestamp with time zone", nullable: true })
1080
1111
  ], User.prototype, "resetTokenExpireAt", 2);
1081
1112
  __decorateClass([
1082
1113
  OneToMany5(() => RefreshToken, (token) => token.user)
1083
1114
  ], User.prototype, "refreshTokens", 2);
1084
1115
  __decorateClass([
1085
- Column10({
1116
+ Column11({
1086
1117
  name: "provider",
1087
1118
  type: "enum",
1088
1119
  enum: Provider,
@@ -1091,16 +1122,16 @@ __decorateClass([
1091
1122
  })
1092
1123
  ], User.prototype, "provider", 2);
1093
1124
  __decorateClass([
1094
- Column10({ name: "provider_token", type: "varchar", nullable: true })
1125
+ Column11({ name: "provider_token", type: "varchar", nullable: true })
1095
1126
  ], User.prototype, "providerToken", 2);
1096
1127
  __decorateClass([
1097
- Column10({ name: "linkedin_id", type: "varchar", nullable: true })
1128
+ Column11({ name: "linkedin_id", type: "varchar", nullable: true })
1098
1129
  ], User.prototype, "linkedInId", 2);
1099
1130
  __decorateClass([
1100
- Column10({ name: "google_id", type: "varchar", nullable: true })
1131
+ Column11({ name: "google_id", type: "varchar", nullable: true })
1101
1132
  ], User.prototype, "googleId", 2);
1102
1133
  __decorateClass([
1103
- Column10({ name: "gitlabs_id", type: "varchar", nullable: true })
1134
+ Column11({ name: "gitlabs_id", type: "varchar", nullable: true })
1104
1135
  ], User.prototype, "gitLabsId", 2);
1105
1136
  __decorateClass([
1106
1137
  OneToMany5(() => Otp, (otp) => otp.user)
@@ -1123,8 +1154,11 @@ __decorateClass([
1123
1154
  __decorateClass([
1124
1155
  OneToMany5(() => BankDetail, (bankDetail) => bankDetail.user)
1125
1156
  ], User.prototype, "bankDetail", 2);
1157
+ __decorateClass([
1158
+ OneToMany5(() => SystemPreference, (systemPreference) => systemPreference.user)
1159
+ ], User.prototype, "systemPreference", 2);
1126
1160
  User = __decorateClass([
1127
- Entity9("users")
1161
+ Entity10("users")
1128
1162
  ], User);
1129
1163
 
1130
1164
  // src/entities/company-profile.entity.ts
@@ -1151,42 +1185,42 @@ var CompanyProfile = class extends BaseEntity {
1151
1185
  };
1152
1186
  // individual index to find company profile by user
1153
1187
  __decorateClass([
1154
- Column11({ name: "user_id", type: "integer", nullable: true }),
1155
- Index6()
1188
+ Column12({ name: "user_id", type: "integer", nullable: true }),
1189
+ Index7()
1156
1190
  ], CompanyProfile.prototype, "userId", 2);
1157
1191
  __decorateClass([
1158
- ManyToOne8(() => User, (user) => user.otps),
1159
- JoinColumn8({ name: "user_id" })
1192
+ ManyToOne9(() => User, (user) => user.otps),
1193
+ JoinColumn9({ name: "user_id" })
1160
1194
  ], CompanyProfile.prototype, "user", 2);
1161
1195
  __decorateClass([
1162
- Column11({ name: "company_name", type: "varchar", nullable: true })
1196
+ Column12({ name: "company_name", type: "varchar", nullable: true })
1163
1197
  ], CompanyProfile.prototype, "companyName", 2);
1164
1198
  __decorateClass([
1165
- Column11({ name: "bio", type: "varchar", nullable: true })
1199
+ Column12({ name: "bio", type: "varchar", nullable: true })
1166
1200
  ], CompanyProfile.prototype, "bio", 2);
1167
1201
  __decorateClass([
1168
- Column11({ name: "website", type: "varchar", nullable: true })
1202
+ Column12({ name: "website", type: "varchar", nullable: true })
1169
1203
  ], CompanyProfile.prototype, "webSite", 2);
1170
1204
  __decorateClass([
1171
- Column11({ name: "about_company", type: "varchar", nullable: true })
1205
+ Column12({ name: "about_company", type: "varchar", nullable: true })
1172
1206
  ], CompanyProfile.prototype, "aboutCompany", 2);
1173
1207
  __decorateClass([
1174
- Column11({ name: "is_service_aggrement_signed", type: "boolean", default: false })
1208
+ Column12({ name: "is_service_aggrement_signed", type: "boolean", default: false })
1175
1209
  ], CompanyProfile.prototype, "isServiceAgreementSigned", 2);
1176
1210
  __decorateClass([
1177
- Column11({ name: "company_address", type: "varchar", nullable: true })
1211
+ Column12({ name: "company_address", type: "varchar", nullable: true })
1178
1212
  ], CompanyProfile.prototype, "companyAddress", 2);
1179
1213
  __decorateClass([
1180
- Column11({ name: "phone_number", type: "varchar", nullable: true })
1214
+ Column12({ name: "phone_number", type: "varchar", nullable: true })
1181
1215
  ], CompanyProfile.prototype, "phoneNumber", 2);
1182
1216
  __decorateClass([
1183
- Column11({ name: "skills", type: "text", nullable: true })
1217
+ Column12({ name: "skills", type: "text", nullable: true })
1184
1218
  ], CompanyProfile.prototype, "skills", 2);
1185
1219
  __decorateClass([
1186
- Column11({ name: "required_freelancer", type: "varchar", nullable: true })
1220
+ Column12({ name: "required_freelancer", type: "varchar", nullable: true })
1187
1221
  ], CompanyProfile.prototype, "requiredFreelancer", 2);
1188
1222
  __decorateClass([
1189
- Column11({
1223
+ Column12({
1190
1224
  name: "kind_of_hiring",
1191
1225
  type: "enum",
1192
1226
  enum: KindOfHire,
@@ -1194,7 +1228,7 @@ __decorateClass([
1194
1228
  })
1195
1229
  ], CompanyProfile.prototype, "kindOfHiring", 2);
1196
1230
  __decorateClass([
1197
- Column11({
1231
+ Column12({
1198
1232
  name: "mode_of_hire",
1199
1233
  type: "enum",
1200
1234
  enum: ModeOfHire,
@@ -1202,7 +1236,7 @@ __decorateClass([
1202
1236
  })
1203
1237
  ], CompanyProfile.prototype, "modeOfHire", 2);
1204
1238
  __decorateClass([
1205
- Column11({
1239
+ Column12({
1206
1240
  name: "found_us_on",
1207
1241
  type: "enum",
1208
1242
  enum: FromUsOn,
@@ -1210,7 +1244,7 @@ __decorateClass([
1210
1244
  })
1211
1245
  ], CompanyProfile.prototype, "foundUsOn", 2);
1212
1246
  CompanyProfile = __decorateClass([
1213
- Entity10("company_profiles")
1247
+ Entity11("company_profiles")
1214
1248
  ], CompanyProfile);
1215
1249
 
1216
1250
  // src/modules/user/client-profile/dto/update-client-profile.dto.ts
@@ -1575,6 +1609,35 @@ var PLAN_PATTERN = {
1575
1609
  fetchPlans: "fetch.plans"
1576
1610
  };
1577
1611
 
1612
+ // src/modules/systempreference/pattern/pattern.ts
1613
+ var SYSTEM_PREFERENCES_PATTERN = {
1614
+ fetchSystemPreferences: "fetch.system.preferences",
1615
+ updateSystemPreferences: "update.system.preferences"
1616
+ };
1617
+
1618
+ // src/modules/systempreference/dto/system-preference.dto.ts
1619
+ import {
1620
+ IsBoolean as IsBoolean6,
1621
+ IsEnum as IsEnum6
1622
+ } from "class-validator";
1623
+ var SystemPreferenceKey = /* @__PURE__ */ ((SystemPreferenceKey2) => {
1624
+ SystemPreferenceKey2["EMAIL_NOTIFICATION"] = "EMAIL_NOTIFICATION";
1625
+ SystemPreferenceKey2["DARK_MODE"] = "DARK_MODE";
1626
+ return SystemPreferenceKey2;
1627
+ })(SystemPreferenceKey || {});
1628
+ var SystemPreferenceDto = class {
1629
+ };
1630
+ __decorateClass([
1631
+ IsBoolean6()
1632
+ ], SystemPreferenceDto.prototype, "value", 2);
1633
+ __decorateClass([
1634
+ IsEnum6(SystemPreferenceKey, {
1635
+ message: `key must be one of: ${Object.values(
1636
+ SystemPreferenceKey
1637
+ ).join(", ")}`
1638
+ })
1639
+ ], SystemPreferenceDto.prototype, "key", 2);
1640
+
1578
1641
  // src/adapters/tcp/user.tcp.adapter.ts
1579
1642
  import { config } from "dotenv";
1580
1643
  import { Transport } from "@nestjs/microservices";
@@ -1792,7 +1855,7 @@ var NotificationRMQAdapter = (mode = "microservice") => {
1792
1855
  };
1793
1856
 
1794
1857
  // src/entities/question.entity.ts
1795
- import { Entity as Entity11, Column as Column12 } from "typeorm";
1858
+ import { Entity as Entity12, Column as Column13 } from "typeorm";
1796
1859
  var QuestionFor = /* @__PURE__ */ ((QuestionFor2) => {
1797
1860
  QuestionFor2["CLIENT"] = "CLIENT";
1798
1861
  QuestionFor2["FREELANCER"] = "FREELANCER";
@@ -1801,16 +1864,16 @@ var QuestionFor = /* @__PURE__ */ ((QuestionFor2) => {
1801
1864
  var Question = class extends BaseEntity {
1802
1865
  };
1803
1866
  __decorateClass([
1804
- Column12({ name: "question", type: "varchar" })
1867
+ Column13({ name: "question", type: "varchar" })
1805
1868
  ], Question.prototype, "question", 2);
1806
1869
  __decorateClass([
1807
- Column12({ name: "hint", type: "varchar", nullable: true })
1870
+ Column13({ name: "hint", type: "varchar", nullable: true })
1808
1871
  ], Question.prototype, "hint", 2);
1809
1872
  __decorateClass([
1810
- Column12({ name: "slug", type: "varchar", nullable: true, unique: true })
1873
+ Column13({ name: "slug", type: "varchar", nullable: true, unique: true })
1811
1874
  ], Question.prototype, "slug", 2);
1812
1875
  __decorateClass([
1813
- Column12({
1876
+ Column13({
1814
1877
  name: "question_for",
1815
1878
  type: "enum",
1816
1879
  enum: QuestionFor,
@@ -1818,34 +1881,77 @@ __decorateClass([
1818
1881
  })
1819
1882
  ], Question.prototype, "questionFor", 2);
1820
1883
  __decorateClass([
1821
- Column12({ name: "type", type: "varchar", nullable: true })
1884
+ Column13({ name: "type", type: "varchar", nullable: true })
1822
1885
  ], Question.prototype, "type", 2);
1823
1886
  __decorateClass([
1824
- Column12({ name: "options", type: "jsonb", nullable: true })
1887
+ Column13({ name: "options", type: "jsonb", nullable: true })
1825
1888
  ], Question.prototype, "options", 2);
1826
1889
  __decorateClass([
1827
- Column12({ name: "is_active", type: "boolean", default: false })
1890
+ Column13({ name: "is_active", type: "boolean", default: false })
1828
1891
  ], Question.prototype, "isActive", 2);
1829
1892
  Question = __decorateClass([
1830
- Entity11("questions")
1893
+ Entity12("questions")
1831
1894
  ], Question);
1832
1895
 
1833
1896
  // src/entities/job-role.entity.ts
1834
- import { Entity as Entity12, Column as Column13 } from "typeorm";
1897
+ import { Entity as Entity13, Column as Column14 } from "typeorm";
1835
1898
  var JobRoles = class extends BaseEntity {
1836
1899
  };
1837
1900
  __decorateClass([
1838
- Column13({ name: "slug", type: "varchar", nullable: true, unique: true })
1901
+ Column14({ name: "slug", type: "varchar", nullable: true, unique: true })
1839
1902
  ], JobRoles.prototype, "slug", 2);
1840
1903
  __decorateClass([
1841
- Column13({ name: "name", type: "varchar", nullable: true })
1904
+ Column14({ name: "name", type: "varchar", nullable: true })
1842
1905
  ], JobRoles.prototype, "name", 2);
1843
1906
  __decorateClass([
1844
- Column13({ name: "is_active", type: "boolean", default: true })
1907
+ Column14({ name: "is_active", type: "boolean", default: true })
1845
1908
  ], JobRoles.prototype, "isActive", 2);
1846
1909
  JobRoles = __decorateClass([
1847
- Entity12("job_roles")
1910
+ Entity13("job_roles")
1848
1911
  ], JobRoles);
1912
+
1913
+ // src/entities/plan.entity.ts
1914
+ import { Entity as Entity15, Column as Column16, ManyToMany as ManyToMany2, JoinTable } from "typeorm";
1915
+
1916
+ // src/entities/feature.entity.ts
1917
+ import { Entity as Entity14, Column as Column15, ManyToMany } from "typeorm";
1918
+ var Feature = class extends BaseEntity {
1919
+ };
1920
+ __decorateClass([
1921
+ Column15({ name: "name", type: "varchar", unique: true })
1922
+ ], Feature.prototype, "name", 2);
1923
+ __decorateClass([
1924
+ ManyToMany(() => Plan, (plan) => plan.features)
1925
+ ], Feature.prototype, "plans", 2);
1926
+ Feature = __decorateClass([
1927
+ Entity14("features")
1928
+ ], Feature);
1929
+
1930
+ // src/entities/plan.entity.ts
1931
+ var Plan = class extends BaseEntity {
1932
+ };
1933
+ __decorateClass([
1934
+ Column16({ name: "name", type: "varchar", unique: true })
1935
+ ], Plan.prototype, "name", 2);
1936
+ __decorateClass([
1937
+ Column16({ name: "description", type: "varchar", nullable: true })
1938
+ ], Plan.prototype, "description", 2);
1939
+ __decorateClass([
1940
+ Column16({ name: "price", type: "decimal", precision: 10, scale: 2 })
1941
+ ], Plan.prototype, "price", 2);
1942
+ __decorateClass([
1943
+ Column16({ name: "billing_period", type: "varchar" })
1944
+ ], Plan.prototype, "billingPeriod", 2);
1945
+ __decorateClass([
1946
+ Column16({ name: "is_current", type: "boolean", default: false })
1947
+ ], Plan.prototype, "isCurrent", 2);
1948
+ __decorateClass([
1949
+ ManyToMany2(() => Feature, (feature) => feature.plans, { cascade: true }),
1950
+ JoinTable()
1951
+ ], Plan.prototype, "features", 2);
1952
+ Plan = __decorateClass([
1953
+ Entity15("plans")
1954
+ ], Plan);
1849
1955
  export {
1850
1956
  AUTHENTICATION_PATTERN,
1851
1957
  AccountStatus,
@@ -1864,6 +1970,7 @@ export {
1864
1970
  CreateQuestionDto,
1865
1971
  CreateSubAdminDto,
1866
1972
  EmploymentType,
1973
+ Feature,
1867
1974
  FreelancerBankDetailsDto,
1868
1975
  FreelancerChangePasswordDto,
1869
1976
  FreelancerCreateAccountDto,
@@ -1903,6 +2010,7 @@ export {
1903
2010
  Otp,
1904
2011
  PLAN_PATTERN,
1905
2012
  PROFILE_PATTERN,
2013
+ Plan,
1906
2014
  Provider,
1907
2015
  QUESTION_PATTERN,
1908
2016
  Question,
@@ -1912,9 +2020,13 @@ export {
1912
2020
  RefreshToken,
1913
2021
  ResumeParserLog,
1914
2022
  SUBADMIN_PATTERN,
2023
+ SYSTEM_PREFERENCES_PATTERN,
1915
2024
  ScopeEnum,
1916
2025
  Skill,
1917
2026
  Step,
2027
+ SystemPreference,
2028
+ SystemPreferenceDto,
2029
+ SystemPreferenceKey,
1918
2030
  TypeOfEmploymentEnum,
1919
2031
  UpdateCompanyProfileDto,
1920
2032
  UpdateSubAdminAccountStatusDto,
@@ -9,3 +9,4 @@ export * from './job';
9
9
  export * from './user/freelancer-profile';
10
10
  export * from './bank';
11
11
  export * from './plan';
12
+ export * from './systempreference';
@@ -0,0 +1 @@
1
+ export * from './system-preference.dto';
@@ -0,0 +1,8 @@
1
+ export declare enum SystemPreferenceKey {
2
+ EMAIL_NOTIFICATION = "EMAIL_NOTIFICATION",
3
+ DARK_MODE = "DARK_MODE"
4
+ }
5
+ export declare class SystemPreferenceDto {
6
+ value: boolean;
7
+ key: SystemPreferenceKey;
8
+ }
@@ -0,0 +1,2 @@
1
+ export * from './pattern/pattern';
2
+ export * from './dto';
@@ -0,0 +1,4 @@
1
+ export declare const SYSTEM_PREFERENCES_PATTERN: {
2
+ fetchSystemPreferences: string;
3
+ updateSystemPreferences: string;
4
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@experts_hub/shared",
3
- "version": "1.0.103",
3
+ "version": "1.0.105",
4
4
  "description": "Shared DTOs, interfaces, and utilities for experts hub applications",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/",