@kipicore/dbcore 1.1.661 → 1.1.662

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.
@@ -176,4 +176,6 @@ export declare const calculateGrade: (subject: {
176
176
  obtained: number;
177
177
  }) => GRADE;
178
178
  export declare const getOverallGrade: (subjects: Subject[]) => GRADE;
179
+ export declare const readEmailTemplate: (templateName: string) => Promise<string>;
180
+ export declare const readEmailTemplateWithOutGlobal: (data: any, templateName?: string) => Promise<string>;
179
181
  export {};
@@ -36,7 +36,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.getOverallGrade = exports.calculateGrade = exports.getNextLetter = exports.getCityAreas = exports.generateVoucherCode = exports.verifyHmacSHA256 = exports.generateHmacSHA256 = exports.customPagination = exports.fromSnakeCaseToNormalText = exports.normalizeToArray = exports.capitalizeFirst = exports.parseOrderOptions = exports.isValidUUID = exports.removeFalsyValues = exports.flattenNestedStructure = exports.buildNestedStructure = exports.getParentsByChildrenId = exports.getChildrenByParentId = exports.sortArray = exports.groupByFields = exports.endOfDay = exports.generateUuidToNumber = exports.startOfDay = exports.isDateWithinRange = exports.isTimeWithinRange = exports.keyByFieldOrFields = exports.getUniqueArrayByFields = exports.generateTempPassword = exports.generateAlphaNumericCode = exports.generateOtp = exports.ensureDirectoryExists = exports.omit = exports.isValidMongoDbId = exports.pick = void 0;
39
+ exports.readEmailTemplateWithOutGlobal = exports.readEmailTemplate = exports.getOverallGrade = exports.calculateGrade = exports.getNextLetter = exports.getCityAreas = exports.generateVoucherCode = exports.verifyHmacSHA256 = exports.generateHmacSHA256 = exports.customPagination = exports.fromSnakeCaseToNormalText = exports.normalizeToArray = exports.capitalizeFirst = exports.parseOrderOptions = exports.isValidUUID = exports.removeFalsyValues = exports.flattenNestedStructure = exports.buildNestedStructure = exports.getParentsByChildrenId = exports.getChildrenByParentId = exports.sortArray = exports.groupByFields = exports.endOfDay = exports.generateUuidToNumber = exports.startOfDay = exports.isDateWithinRange = exports.isTimeWithinRange = exports.keyByFieldOrFields = exports.getUniqueArrayByFields = exports.generateTempPassword = exports.generateAlphaNumericCode = exports.generateOtp = exports.ensureDirectoryExists = exports.omit = exports.isValidMongoDbId = exports.pick = void 0;
40
40
  exports.groupByFieldOrFields = groupByFieldOrFields;
41
41
  exports.slugify = slugify;
42
42
  exports.assignNonNull = assignNonNull;
@@ -51,6 +51,8 @@ const uuid = require('uuid');
51
51
  const crypto_1 = __importDefault(require("crypto"));
52
52
  const sequelize_1 = require("sequelize");
53
53
  const axios_1 = __importDefault(require("axios"));
54
+ const ejs_1 = __importDefault(require("ejs"));
55
+ const path_1 = __importDefault(require("path"));
54
56
  const PASSWORD_REGEX = new RegExp('^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!.@#$%^&*])(?=.{8,})');
55
57
  const pick = (objOrArray, keys) => {
56
58
  const pickObject = (obj) => keys.reduce((acc, key) => {
@@ -506,9 +508,10 @@ const parseOrderOptions = (inputOrder, defaultOrder = [['createdAt', 'DESC']]) =
506
508
  return order;
507
509
  };
508
510
  exports.parseOrderOptions = parseOrderOptions;
511
+ const configs_1 = require("../configs");
509
512
  const capitalizeFirst = (str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
510
513
  exports.capitalizeFirst = capitalizeFirst;
511
- const normalizeToArray = (value) => value ? (Array.isArray(value) ? value : [value]) : undefined;
514
+ const normalizeToArray = (value) => (value ? (Array.isArray(value) ? value : [value]) : undefined);
512
515
  exports.normalizeToArray = normalizeToArray;
513
516
  /**
514
517
  * Converts a snake_case string to Normal Text
@@ -541,8 +544,7 @@ function assignNonNull(target, source) {
541
544
  });
542
545
  }
543
546
  function isUserSchoolInfoUpdate(institute, reqUser) {
544
- return (!!(institute.type || institute.subType) &&
545
- (reqUser.isAddDetails || reqUser.type === app_1.USER_TYPES.INSTITUTE_MASTER_ADMIN || reqUser.type === app_1.USER_TYPES.INSTITUTE_ADMIN));
547
+ return !!(institute.type || institute.subType) && (reqUser.isAddDetails || reqUser.type === app_1.USER_TYPES.INSTITUTE_MASTER_ADMIN || reqUser.type === app_1.USER_TYPES.INSTITUTE_ADMIN);
546
548
  }
547
549
  function chunkArray(array, size) {
548
550
  const chunks = [];
@@ -734,3 +736,43 @@ const getOverallGrade = (subjects) => {
734
736
  return worstGrade;
735
737
  };
736
738
  exports.getOverallGrade = getOverallGrade;
739
+ const readEmailTemplate = async (templateName) => {
740
+ const globalFilePath = path_1.default.join(process.cwd(), 'emailTemplates', `globalEmailTemplate.ejs`);
741
+ const filePath = path_1.default.join(process.cwd(), 'emailTemplates', `${templateName}.ejs`);
742
+ let globalEmailTemplate = await fs_1.default.readFileSync(globalFilePath, 'utf-8');
743
+ const html = ejs_1.default.render(globalEmailTemplate, {
744
+ data: {
745
+ kipiLogo: `${configs_1.ENV_VARIABLE.SERVER_URL}/public/kipilogo.png`,
746
+ googlePlayLogo: `${configs_1.ENV_VARIABLE.SERVER_URL}/public/googleplaylogo.png`,
747
+ applePlayLogo: `${configs_1.ENV_VARIABLE.SERVER_URL}/public/appleplaylogo.png`,
748
+ },
749
+ });
750
+ globalEmailTemplate = html.replace(/\r\n/g, '');
751
+ return new Promise((resolve, reject) => {
752
+ fs_1.default.readFile(filePath, 'utf-8', (err, content) => {
753
+ if (err) {
754
+ return reject(err);
755
+ }
756
+ resolve(globalEmailTemplate.replace(/{{content}}/g, content));
757
+ });
758
+ });
759
+ };
760
+ exports.readEmailTemplate = readEmailTemplate;
761
+ const readEmailTemplateWithOutGlobal = async (data, templateName) => {
762
+ return new Promise((resolve, reject) => {
763
+ const templatePath = path_1.default.join(process.cwd(), 'emailTemplates', `${templateName || app_1.EMAIL_TEMPLATES.COMMON_TEMPLATE}.ejs`);
764
+ fs_1.default.readFile(templatePath, 'utf-8', (err, templateContent) => {
765
+ if (err) {
766
+ return reject(err);
767
+ }
768
+ const html = ejs_1.default.render(templateContent, {
769
+ logoUrl: data.instituteLogo,
770
+ content: data.content,
771
+ googlePlayLogo: `${process.env.SERVER_URL}/public/googleplaylogo.png`,
772
+ appStoreLogo: `${process.env.SERVER_URL}/public/appleplaylogo.png`,
773
+ });
774
+ resolve(html);
775
+ });
776
+ });
777
+ };
778
+ exports.readEmailTemplateWithOutGlobal = readEmailTemplateWithOutGlobal;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kipicore/dbcore",
3
- "version": "1.1.661",
3
+ "version": "1.1.662",
4
4
  "description": "Reusable DB core package with Postgres, MongoDB, models, services, interfaces, and types",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
@@ -50,12 +50,14 @@
50
50
  "mongoose": "^8.5.2",
51
51
  "pg": "^8.12.0",
52
52
  "sequelize": "^6.37.3",
53
+ "ejs": "^3.1.10",
53
54
  "uuid": "^8.3.2"
54
55
  },
55
56
  "devDependencies": {
56
57
  "@eslint/js": "^9.17.0",
57
58
  "@types/express": "^5.0.6",
58
59
  "@types/mongoose": "^5.11.97",
60
+ "@types/ejs": "^3.1.5",
59
61
  "@types/node": "^24.5.2",
60
62
  "@types/sequelize": "^4.28.14",
61
63
  "country-state-city": "^3.2.1",